Attr

這是定義規則或要素屬性結構定義的頂層模組。每個函式都會傳回一個物件,代表單一屬性的結構定義。這些物件會做為 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; 預設值 = []
屬性可用值清單。如果提供任何其他值,就會發生錯誤。

int_list

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; 預設值 = []
執行個體化規則時,如未指定這項屬性的值,系統會使用預設值。
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; default = 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; default = None
是否允許 File 目標。可以是 TrueFalse (預設),或允許的副檔名清單 (例如 [".cc", ".cpp"])。
allow_single_file default = None
這與 allow_files 類似,不過標籤必須對應單一檔案的限制。透過 ctx.file.<attribute_name> 存取。
mandatory default = False
如果為 true,則必須明確指定值 (即使有 default)。
providers default = []
提供者必須由這項屬性中的任何依附元件提供。

這個引數的格式是供應器的清單,也就是由 provider() 傳回的 *Info 物件 (若是舊版供應器,則其字串名稱)。依附元件必須傳回至少 ONE 份內部清單中提及的「所有」供應器。為了方便起見,此引數也可能是單一的提供者清單,在這種情況下,會納入具有一個元素的外部清單。

allow_rules sequence of strings; or None;預設值 = 無
允許哪些規則目標 (類別名稱)。已淘汰 (僅用於相容性),請改用提供者。
cfg default = None
屬性的「Configuration」。可以是 "exec" (表示依附元件是針對 execution platform 建構) 或 "target" (表示依附元件是針對 target platform 建構)。造成這種差異的常見例子是建構行動應用程式,其中 target platformAndroidiOS,而 execution platformLinuxmacOSWindows。如果 executable 設為 True,就必須提供這個參數,以防止在目標設定中不小心建構主機工具。"target" 沒有語意效果,因此除非 executable 為 False,否則除非已經能清楚說明您的意圖,否則請勿設定此參數。
aspects sequence of Aspects; default = []
應套用至這個屬性指定的依附元件或依附元件的規格。

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; default = None
是否允許 File 目標。可以是 TrueFalse (預設),或允許的副檔名清單 (例如 [".cc", ".cpp"])。
allow_rules sequence of strings; or None;預設值 = 無
允許哪些規則目標 (類別名稱)。已淘汰 (僅用於相容性),請改用提供者。
providers default = []
提供者必須由這項屬性中的任何依附元件提供。

這個引數的格式是供應器的清單,也就是由 provider() 傳回的 *Info 物件 (若是舊版供應器,則其字串名稱)。依附元件必須傳回至少 ONE 份內部清單中提及的「所有」供應器。為了方便起見,此引數也可能是單一的提供者清單,在這種情況下,會納入具有一個元素的外部清單。

flags sequence of strings; default = []
已淘汰,並會移除。
mandatory default = False
如果為 true,則必須明確指定值 (即使有 default)。
cfg default = None
屬性的「Configuration」。可以是 "exec" (表示依附元件是針對 execution platform 建構) 或 "target" (表示依附元件是針對 target platform 建構)。造成這種差異的常見例子是建構行動應用程式,其中 target platformAndroidiOS,而 execution platformLinuxmacOSWindows
aspects sequence of Aspects; default = []
應套用至這個屬性指定的依附元件或依附元件的規格。

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; default = None
是否允許 File 目標。可以是 TrueFalse (預設),或允許的副檔名清單 (例如 [".cc", ".cpp"])。
allow_rules sequence of strings; or None;預設值 = 無
允許哪些規則目標 (類別名稱)。已淘汰 (僅用於相容性),請改用提供者。
providers default = []
提供者必須由這項屬性中的任何依附元件提供。

這個引數的格式是供應器的清單,也就是由 provider() 傳回的 *Info 物件 (若是舊版供應器,則其字串名稱)。依附元件必須傳回至少 ONE 份內部清單中提及的「所有」供應器。為了方便起見,此引數也可能是單一的提供者清單,在這種情況下,會納入具有一個元素的外部清單。

flags sequence of strings; default = []
已淘汰,並會移除。
mandatory default = False
如果為 true,則必須明確指定值 (即使有 default)。
cfg default = None
屬性的「Configuration」。可以是 "exec" (表示依附元件是針對 execution platform 建構) 或 "target" (表示依附元件是針對 target platform 建構)。造成這種差異的常見例子是建構行動應用程式,其中 target platformAndroidiOS,而 execution platformLinuxmacOSWindows
aspects sequence of Aspects; default = []
應套用至這個屬性指定的依附元件或依附元件的規格。

output

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

建立輸出 (標籤) 屬性的結構定義。

這個屬性含有專屬的 Label 值。如果提供字串取代 Label,系統會使用標籤建構函式轉換字串。執行個體化目標的套件會解析標籤路徑的相對部分,包括 (可能重新命名) 存放區。

在分析期間,您可以使用 ctx.outputs 擷取對應的 File

參數

參數 說明
doc default = '
可透過說明文件產生工具擷取的屬性說明。
mandatory default = False
如果為 true,則必須明確指定值 (即使有 default)。

output_list

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; 預設值 = ''
執行個體化規則時,如未指定這項屬性的值,系統會使用預設值。
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)。

string_list

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; 預設值 = []
執行個體化規則時,如未指定這項屬性的值,系統會使用預設值。
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)。