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
类型。
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 时设置它。
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
替换。这样,您就可以访问当前目标的依赖项的提供程序。
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=[])
为 字符串 属性创建架构。
Attribute attr.string_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)
为包含字典的属性创建架构,其中键和值均为字符串。
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
替换。这样,您就可以访问当前目标的依赖项的提供程序。
Attribute attr.string_list(mandatory=False, allow_empty=True, *, configurable=unbound, default=[], doc=None)
为字符串列表属性创建架构。
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。"],[],[]]