属性

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。
这是用于定义规则或方面属性架构的顶级模块。每个函数都会返回一个对象,表示单个属性的架构。这些对象会用作 rule()aspect()attrs 字典参数的值。

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

会员

bool

Attribute attr.bool(default=False, doc='', mandatory=False)

为布尔值属性创建架构。

参数

参数 说明
default default = False
在实例化规则时未提供此属性的任何值时要使用的默认值。
doc default = ''
可通过文档生成工具提取的特性的说明。
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。

int

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

为整数属性创建架构。该值必须在有符号的 32 位范围内。

参数

参数 说明
default default = 0
在实例化规则时,如果没有为此属性指定任何值,则系统会使用默认值。
doc default = ''
可通过文档生成工具提取的特性的说明。
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。
values sequence of ints;默认值为 []
。属性的允许值列表。如果提供任何其他值,则会引发错误。

整数列表

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

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

参数

参数 说明
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。
allow_empty default = True
如果属性可以为空,则返回 True。
default sequence of ints; default = []
在实例化规则时,如果没有为此属性指定任何值,则系统会使用默认值。
doc default = ''
可通过文档生成工具提取的特性的说明。

标签

Attribute attr.label(default=None, doc='', executable=False, allow_files=None, allow_single_file=None, mandatory=False, providers=[], allow_rules=None, cfg=None, aspects=[])

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

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

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

除了普通的源文件之外,这种属性通常还用于指代工具(例如编译器)。与源文件一样,这些工具也被视为依赖项。为避免每次用户在 BUILD 文件中使用规则时都必须指定工具的标签,您可以将规范工具的标签硬编码为此属性的 default 值。如果您还想禁止用户覆盖此默认设置,则可以将属性设为以下划线开头,将其设为不公开。如需了解详情,请参阅规则页面。

参数

参数 说明
default Label; or string; or LateBoundDefault; or NativeComputedDefault; or function; or None;默认值 = None
在实例化规则时未指定此属性时要使用的默认值。请使用字符串或 Label 函数指定默认值,例如 attr.label(default = "//a:b")
doc default = ''
可通过文档生成工具提取的特性的说明。
executable default = False
如果依赖项必须可执行,则为 true。这意味着标签必须引用可执行文件或输出可执行文件的规则。使用 ctx.executable.<attribute_name> 访问标签。
allow_files bool; or sequence of strings; or None;默认值 = None
是否允许 File 目标。值可以是 TrueFalse(默认),也可以是允许的文件扩展名列表(例如 [".cc", ".cpp"])。
allow_single_file default = None
该属性与 allow_files 类似,但限制的标签必须与单个 File 相对应。通过 ctx.file.<attribute_name> 访问它。
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。
providers default = []
此属性中显示的任何依赖项都必须提供的提供程序。

此参数的格式是一个提供商列表 - 由 provider() 返回的 *Info 对象(如果是旧版提供商,则是字符串名称)。依赖项必须返回至少一个内部列表中提及的所有提供商。为方便起见,此参数也可以是单级提供程序列表,在这种情况下,它会被封装在一个元素中的外部列表中。

allow_rules sequence of strings; or None;默认值 = None
允许哪些规则目标(类名称)。此功能已弃用(仅出于兼容性考虑而保留),请改用提供程序。
cfg default = None
属性的配置。它可以是 "exec"(表示为 execution platform 构建)或 "target"(表示该依赖项是为 target platform 构建的)。一个典型的区别是,构建移动应用时,target platformAndroidiOS,而 execution platformLinuxmacOSWindows。如果 executable 为 True,那么此参数是必需参数,以防止在目标配置中意外构建主机工具。"target" 没有语义效果,因此不要在 executable 为 False 时设置语义效果,除非确实有助于阐明您的意图。
aspects sequence of Aspects;默认值为 []
。应应用于此属性指定的一个或多个依赖项的方面。

label_keyed_string_dict

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

用于为存储字典的属性创建一个架构,其中键是标签,值是字符串。这是一个依赖项属性。

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

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

参数

参数 说明
allow_empty default = True
如果属性可以为空,则返回 True。
default dict; or function; default = {}
在实例化规则时,如果没有为此属性指定任何值,则系统会使用默认值。请使用字符串或 Label 函数指定默认值,例如 attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"})
doc default = ''
可通过文档生成工具提取的特性的说明。
allow_files bool; or sequence of strings; or None;默认值 = None
是否允许 File 目标。值可以是 TrueFalse(默认),也可以是允许的文件扩展名列表(例如 [".cc", ".cpp"])。
allow_rules sequence of strings; or None;默认值 = None
允许哪些规则目标(类名称)。此功能已弃用(仅出于兼容性考虑而保留),请改用提供程序。
providers default = []
此属性中显示的任何依赖项都必须提供的提供程序。

此参数的格式是一个提供商列表 - 由 provider() 返回的 *Info 对象(如果是旧版提供商,则是字符串名称)。依赖项必须返回至少一个内部列表中提及的所有提供商。为方便起见,此参数也可以是单级提供程序列表,在这种情况下,它会被封装在一个元素中的外部列表中。

flags sequence of strings;默认值为 []
。已弃用,将被移除。
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。
cfg default = None
属性的配置。它可以是 "exec"(表示为 execution platform 构建)或 "target"(表示该依赖项是为 target platform 构建的)。一个典型的区别示例是,构建移动应用时,target platformAndroidiOS,而 execution platformLinuxmacOSWindows
aspects sequence of Aspects;默认值为 []
。应应用于此属性指定的一个或多个依赖项的方面。

label_list

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

用于为标签列表属性创建架构。这是一个依赖项属性。

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

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

参数

参数 说明
allow_empty default = True
如果属性可以为空,则返回 True。
default sequence of Labels; or function; default = []
在实例化规则时,如果没有为此属性指定任何值,则系统会使用默认值。请使用字符串或 Label 函数指定默认值,例如 attr.label_list(default = ["//a:b", "//a:c"])
doc default = ''
可通过文档生成工具提取的特性的说明。
allow_files bool; or sequence of strings; or None;默认值 = None
是否允许 File 目标。值可以是 TrueFalse(默认),也可以是允许的文件扩展名列表(例如 [".cc", ".cpp"])。
allow_rules sequence of strings; or None;默认值 = None
允许哪些规则目标(类名称)。此功能已弃用(仅出于兼容性考虑而保留),请改用提供程序。
providers default = []
此属性中显示的任何依赖项都必须提供的提供程序。

此参数的格式是一个提供商列表 - 由 provider() 返回的 *Info 对象(如果是旧版提供商,则是字符串名称)。依赖项必须返回至少一个内部列表中提及的所有提供商。为方便起见,此参数也可以是单级提供程序列表,在这种情况下,它会被封装在一个元素中的外部列表中。

flags sequence of strings;默认值为 []
。已弃用,将被移除。
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。
cfg default = None
属性的配置。它可以是 "exec"(表示为 execution platform 构建)或 "target"(表示该依赖项是为 target platform 构建的)。一个典型的区别示例是,构建移动应用时,target platformAndroidiOS,而 execution platformLinuxmacOSWindows
aspects sequence of Aspects;默认值为 []
。应应用于此属性指定的一个或多个依赖项的方面。

输出

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

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

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

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

参数

参数 说明
doc default = ''
可通过文档生成工具提取的特性的说明。
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。

输出列表

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

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

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

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

参数

参数 说明
allow_empty default = True
如果属性可以为空,则返回 True。
doc default = ''
可通过文档生成工具提取的特性的说明。
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。

字符串

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

为字符串属性创建架构。

参数

参数 说明
default string; or NativeComputedDefault; default = ''
在实例化规则时,如果没有为此属性指定任何值,则系统会使用以下默认值。
doc default = ''
可通过文档生成工具提取的特性的说明。
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。
values sequence of strings;默认值为 []
。属性的允许值列表。如果提供任何其他值,则会引发错误。

string_dict

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

为存储字典的属性创建架构,其中键和值是字符串。

参数

参数 说明
allow_empty default = True
如果属性可以为空,则返回 True。
default default = {}
如果在实例化规则时未提供此属性的任何值,则系统会使用默认值。
doc default = ''
可通过文档生成工具提取的特性的说明。
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。

字符串列表

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

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

参数

参数 说明
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。
allow_empty default = True
如果属性可以为空,则返回 True。
default sequence of strings; or NativeComputedDefault; default = []
在实例化规则时,如果没有为此属性指定任何值,则系统会使用默认值。
doc default = ''
可通过文档生成工具提取的特性的说明。

string_list_dict

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

用于为存储字典的属性创建架构,其中键是字符串,值是字符串列表。

参数

参数 说明
allow_empty default = True
如果属性可以为空,则返回 True。
default default = {}
如果在实例化规则时未提供此属性的任何值,则系统会使用默认值。
doc default = ''
可通过文档生成工具提取的特性的说明。
mandatory default = False
如果为 true,则必须明确指定值(即使具有 default)。