• 配置 Fragment
  • Starlark 核心数据类型
  • 代码库规则
  • 这是一个顶级模块,用于定义规则或方面属性架构。每个函数都会返回一个对象,表示单个属性的架构。这些对象用作 rule() aspect() repository_rule() tag_class() attrs 字典参数的值。

    如需详细了解如何 定义 使用 属性,请参阅“规则”页面。

    int_list label label_keyed_string_dict label_list output output_list string_dict string_keyed_label_dict string_list string_list_dict

    Attribute attr.bool(configurable=unbound, default=False, doc=None, mandatory=False)

    为布尔值属性创建架构。相应的 ctx.attr 属性将为 bool 类型。

    Attribute attr.int(configurable=unbound, default=0, doc=None, mandatory=False, values=[])

    为整数属性创建架构。值必须在 32 位有符号范围内。相应的 ctx.attr 属性将为 int 类型。

    int_list

    Attribute attr.int_list(mandatory=False, allow_empty=True, *, configurable=unbound, default=[], doc=None)

    为整数列表属性创建架构。每个元素都必须在 32 位有符号范围内。

    Attribute attr.label(configurable=unbound, default=None, materializer=None, doc=None, executable=False, allow_files=None, allow_single_file=None, mandatory=False, skip_validations=False, providers=[], for_dependency_resolution=unbound, allow_rules=None, cfg=None, aspects=[], flags=[])

    为标签属性创建架构。这是依赖项属性。

    此属性包含唯一的 Label 值。如果提供字符串来替代 Label ,系统会使用 标签构造函数 进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。

    在分析时(在规则的实现函数内),从 ctx.attr 检索属性值时,标签会被相应的 Target 替换。这样,您就可以访问当前目标的依赖项的提供程序。

    除了普通的源文件之外,此类属性通常也用于引用工具,例如编译器。这些工具与源文件一样,也被视为依赖项。为避免要求用户每次在 BUILD 文件中使用规则时都指定工具的标签,您可以将规范工具的标签作为此属性的 default 值进行硬编码。如果您还想阻止用户替换此默认值,可以为该属性指定一个以下划线开头的名称,以将其设为私有属性。如需了解详情,请参阅 规则 页面。 默认值为 None
    属性的 配置 。它可以是 "exec" ,表示依赖项是为 execution platform 构建的,也可以是 "target" ,表示依赖项是为 target platform 构建的。一个典型的区别示例是,在构建移动应用时, target platform Android iOS ,而 execution platform Linux macOS Windows 。如果 executable 为 True,则此参数是必需的,以防止在目标配置中意外构建宿主工具。 "target" 没有语义影响,因此,除非它确实有助于阐明您的意图,否则请勿在 executable 为 False 时设置它。

    label_keyed_string_dict

    Attribute attr.label_keyed_string_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, skip_validations=False, cfg=None, aspects=[])

    为包含字典的属性创建架构,其中键是标签,值是字符串。这是依赖项属性。

    此属性包含唯一的 Label 值。如果提供字符串来替代 Label ,系统会使用 标签构造函数 进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。

    在分析时(在规则的实现函数内),从 ctx.attr 检索属性值时,标签会被相应的 Target 替换。这样,您就可以访问当前目标的依赖项的提供程序。

    label_list

    Attribute attr.label_list(allow_empty=True, *, configurable=unbound, default=[], materializer=None, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, skip_validations=False, cfg=None, aspects=[])

    为标签列表属性创建架构。这是依赖项属性。相应的 ctx.attr 属性将为 Target 列表 类型。

    此属性包含唯一的 Label 值。如果提供字符串来替代 Label ,系统会使用 标签构造函数 进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。

    在分析时(在规则的实现函数内),从 ctx.attr 检索属性值时,标签会被相应的 Target 替换。这样,您就可以访问当前目标的依赖项的提供程序。

    Attribute attr.output(doc=None, mandatory=False)

    为输出(标签)属性创建架构。

    此属性包含唯一的 Label 值。如果提供字符串来替代 Label ,系统会使用 标签构造函数 进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。

    在分析时,可以使用 ctx.outputs 检索相应的 File

    Attribute attr.output_list(allow_empty=True, *, doc=None, mandatory=False)

    为输出列表属性创建架构。

    此属性包含唯一的 Label 值。如果提供字符串来替代 Label ,系统会使用 标签构造函数 进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。

    在分析时,可以使用 ctx.outputs 检索相应的 File

    Attribute attr.string(configurable=unbound, default='', doc=None, mandatory=False, values=[])

    字符串 属性创建架构。

    string_dict

    Attribute attr.string_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)

    为包含字典的属性创建架构,其中键和值均为字符串。

    string_keyed_label_dict

    Attribute attr.string_keyed_label_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, cfg=None, aspects=[])

    为属性创建架构,其值为字典,其中键为字符串,值为标签。这是依赖项属性。

    此属性包含唯一的 Label 值。如果提供字符串来替代 Label ,系统会使用 标签构造函数 进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。

    在分析时(在规则的实现函数内),从 ctx.attr 检索属性值时,标签会被相应的 Target 替换。这样,您就可以访问当前目标的依赖项的提供程序。

    string_list

    Attribute attr.string_list(mandatory=False, allow_empty=True, *, configurable=unbound, default=[], doc=None)

    为字符串列表属性创建架构。

    string_list_dict

    Attribute attr.string_list_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)

    为包含字典的属性创建架构,其中键为字符串,值为字符串列表。

    如未另行说明,那么本页面中的内容已根据 知识共享署名 4.0 许可 获得了许可,并且代码示例已根据 Apache 2.0 许可 获得了许可。有关详情,请参阅 Google 开发者网站政策 。Java 是 Oracle 和/或其关联公司的注册商标。

    最后更新时间 (UTC):2025-05-24。

    [[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-05-24。"],[],[]]