用於 C++ 編譯、連結和產生指令列的工具。
成員
- action_is_enabled
- CcToolchainInfo
- 編譯
- configure_features
- create_cc_toolchain_config_info
- create_compilation_context
- create_compilation_outputs
- create_compile_variables
- create_library_to_link
- create_link_variables
- create_linker_input
- create_linking_context
- create_linking_context_from_compilation_outputs
- do_not_use_tools_cpp_compiler_present
- get_environment_variables
- get_execution_requirements
- get_memory_inefficient_command_line
- get_tool_for_action
- is_enabled
- 連結
- merge_compilation_contexts
- merge_compilation_outputs
action_is_enabled
bool cc_common.action_is_enabled(feature_configuration, action_name)
參數
參數 | 說明 |
---|---|
feature_configuration
|
必填 要查詢的特徵設定。 |
action_name
|
必要 action_config 的名稱。 |
CcToolchainInfo
Provider cc_common.CcToolchainInfo
compile
tuple cc_common.compile(actions, feature_configuration, cc_toolchain, srcs=[], public_hdrs=[], private_hdrs=[], includes=[], quote_includes=[], system_includes=[], framework_includes=[], defines=[], local_defines=[], include_prefix='', strip_include_prefix='', user_compile_flags=[], conly_flags=[], cxx_flags=[], compilation_contexts=[], name, disallow_pic_outputs=False, disallow_nopic_outputs=False, additional_inputs=[])
CompilationContext
, CcCompilationOutputs
) 的元組。
參數
參數 | 說明 |
---|---|
actions
|
必須的 actions 物件。 |
feature_configuration
|
feature_configuration 進行查詢。 |
cc_toolchain
|
CcToolchainInfo 供應器。 |
srcs
|
預設為 [] 要編譯的來源檔案清單。 |
public_hdrs
|
預設為 [] 編譯來源時所需的標頭清單,可能會由依附規則間接納入。 |
private_hdrs
|
預設為 [] 編譯來源時所需的標頭清單,且不會納入依附規則。 |
includes
|
sequence 或 depset;預設為 [] 。 同時使用尖括號和引號參照的標頭檔案搜尋路徑。通常會透過 -I 傳遞。會以遞移方式傳播至依附元件。 |
quote_includes
|
預設為 [] 以引號參照的標頭檔案搜尋路徑,例如 #include "foo/bar/header.h"。可以是相對於執行根目錄的相對路徑,也可以是絕對路徑。通常會搭配 -iquote 使用。會以遞移方式傳播至依附元件。 |
system_includes
|
預設為 [] 以尖括號參照的標頭檔案搜尋路徑,例如 #include <foo/bar/header.h>。這些路徑可以是相對於執行根目錄或絕對路徑。通常會透過 -isystem 傳遞。會以遞移方式傳播至依附元件。 |
framework_includes
|
預設為 [] Apple 架構的標頭檔案搜尋路徑。可以是相對於執行根目錄的相對路徑,也可以是絕對路徑。通常會透過 -F 傳遞。會以遞移方式傳播至依附元件。 |
defines
|
預設為 [] 編譯這個目標所需的定義集。每個定義都是字串。會以遞移方式傳播至依附元件。 |
local_defines
|
預設為 [] 編譯這個目標所需的定義集。每個定義都是字串。不會以遞移方式傳播至依附元件。 |
include_prefix
|
預設為 '' 要在這個規則的標頭路徑中新增的前置字串。設定後,您可以在該規則的 hdrs 屬性中存取標頭,該屬性值會附加至相對於存放區的路徑。系統會先移除 strip_include_prefix 屬性中的前置字串,再新增這個前置字串。 |
strip_include_prefix
|
預設值為 '' 從此規則標頭路徑中移除的前置字串。設定後,這個規則的 hdrs 屬性中,標頭的路徑會加上這個前置字串,以便存取。如果是相對路徑,則會視為與套件相關的路徑。如果是絕對路徑,系統會將其視為相對於存放區的路徑。在移除這個前置字元後,系統會新增 include_prefix 屬性中的前置字元。 |
user_compile_flags
|
預設為 [] 其他編譯選項清單。 |
conly_flags
|
預設為 [] C 編譯的其他編譯選項清單。 |
cxx_flags
|
預設為 [] C++ 編譯作業的其他編譯選項清單。 |
compilation_contexts
|
預設為 [] 用於編譯的依附元件標頭。 |
name
|
必填 這個屬性用於命名這個方法建立的動作輸出構件。另請參閱 `main_output` 引數。 |
disallow_pic_outputs
|
預設值為 False PIC 輸出內容是否應建立。 |
disallow_nopic_outputs
|
預設值為 False NOPIC 輸出內容是否應建立。 |
additional_inputs
|
預設為 [] 編譯來源檔案所需的其他檔案清單 |
configure_features
FeatureConfiguration cc_common.configure_features(ctx=None, cc_toolchain, language=None, requested_features=[], unsupported_features=[])
參數
參數 | 說明 |
---|---|
ctx
|
ctx;或 None ;
預設為 None 規則內容。 |
cc_toolchain
|
需要 cc_toolchain,我們會為其設定功能。 |
language
|
字串或 None ;
預設為 None 要設定的語言:c++ 或 objc (預設為 c++) |
requested_features
|
預設為 [] 要啟用的功能清單。 |
unsupported_features
|
預設為 [] 目前規則不支援的功能清單。 |
create_cc_toolchain_config_info
CcToolchainConfigInfo cc_common.create_cc_toolchain_config_info(ctx, features=[], action_configs=[], artifact_name_patterns=[], cxx_builtin_include_directories=[], toolchain_identifier, host_system_name=None, target_system_name, target_cpu, target_libc, compiler, abi_version=None, abi_libc_version=None, tool_paths=[], make_variables=[], builtin_sysroot=None, cc_target_os=None)
CcToolchainConfigInfo
供應器
參數
參數 | 說明 |
---|---|
ctx
|
必要 規則內容。 |
features
|
預設為 [] 包含一個地圖項目的所有標記規格。 引數:
- provides 包含我們要啟用的不同功能或動作設定名稱。- provides 包含與我們要啟用的不同功能或動作設定中的「提供」相同的值。使用此方法可確保不相容的功能不會同時意外啟用,導致難以診斷的編譯器錯誤。 |
action_configs
|
預設為 [] Action 設定會對應至 Bazel 動作,並允許根據已啟用的功能選取工具。動作設定檔的啟用方式與功能相同:功能可以「要求」或「暗示」某個動作設定檔,就像其他功能一樣。 引數:
|
artifact_name_patterns
|
預設值為 [] 動作中特定類別輸入或輸出構件的構件名稱。 引數:
|
cxx_builtin_include_directories
|
預設值為 [] 內建的 C++ 編譯內含目錄。這些應為編譯器使用的確切路徑,通常會相對於執行根目錄。 您可以使用 'gcc -E -xc++ - -v' 判斷編譯器使用的路徑。 我們目前也使用 C++ 路徑進行 C 編譯,只要 C++ 和 C 標頭檔案之間沒有名稱衝突,這項做法就很安全。 系統會根據設定檔目錄解析相對路徑。 如果編譯器支援 --sysroot,則這些路徑應使用 %sysroot% 而非包含路徑,並指定 sysroot 屬性,以便提供 Blaze 必要的資訊,以便做出正確的替換。 |
toolchain_identifier
|
必填 crosstool 版本中工具鍊的專屬 ID。這個名稱必須能夠用於路徑中的目錄名稱。 必須符合以下規則運算式:[a-zA-Z_][\.\- \w]* |
host_system_name
|
字串;或 None ;預設為 None 。忽略。 |
target_system_name
|
必填 GNU 系統名稱。 |
target_cpu
|
required 目標架構字串。 |
target_libc
|
必要 libc 版本字串 (例如「glibc-2.2.2」)。 |
compiler
|
必要 編譯器版本字串 (例如「gcc-4.1.1」)。 |
abi_version
|
字串;或 None ;
預設為 None 使用的 ABI,即 GCC 版本。例如:「gcc-3.4」 |
abi_libc_version
|
字串;或 None ;
預設值為 None 我們使用的 ABI 所使用的 glibc 版本。 |
tool_paths
|
預設為 [] Tool 位置。 引數:
|
make_variables
|
預設為 [] 可供規則存取的製作變數。 |
builtin_sysroot
|
字串;或 None ;
預設為 None 內建的 sysroot。如果沒有這個屬性,Bazel 就不會允許使用不同的 sysroot,也就是透過 --grte_top 選項。 |
cc_target_os
|
string 或 None ;
預設為 None 僅供內部使用,請勿使用。 |
create_compilation_context
CompilationContext cc_common.create_compilation_context(headers=unbound, system_includes=unbound, includes=unbound, quote_includes=unbound, framework_includes=unbound, defines=unbound, local_defines=unbound)
CompilationContext
。
參數
參數 | 說明 |
---|---|
headers
|
預設為 unbound 編譯此目標所需的標頭組合 |
system_includes
|
預設為 unbound 以尖括號參照的標頭檔案搜尋路徑集,例如 #include <foo/bar/header.h>。這些路徑可以是相對於執行根目錄或絕對路徑。通常會搭配 -isystem 傳遞 |
includes
|
預設為 unbound 以尖括號和引號同時參照的標頭檔案搜尋路徑集。通常會透過 -I 傳遞 |
quote_includes
|
預設為 unbound 以引號參照的標頭檔案搜尋路徑集,例如 #include "foo/bar/header.h"。可以是相對於執行根目錄的相對路徑,也可以是絕對路徑。通常會搭配 -iquote 使用 |
framework_includes
|
預設為 unbound (僅限 Apple 平台) 的標頭檔案架構搜尋路徑集 |
defines
|
預設為 unbound 編譯這個目標所需的定義集。每個定義都是字串。會遞迴傳播至依附元件。 |
local_defines
|
預設為 unbound 編譯這個目標所需的定義集。每個定義都是字串。不會以遞迴方式傳播至依附元件。 |
create_compilation_outputs
CcCompilationOutputs cc_common.create_compilation_outputs(objects=None, pic_objects=None)
參數
參數 | 說明 |
---|---|
objects
|
depset 或 None ;預設為 None 。物件檔案清單。 |
pic_objects
|
depset 或 None ;
預設為 None 。 pic 物件檔案清單。 |
create_compile_variables
Variables cc_common.create_compile_variables(cc_toolchain, feature_configuration, source_file=None, output_file=None, user_compile_flags=None, include_directories=None, quote_include_directories=None, system_include_directories=None, framework_include_directories=None, preprocessor_defines=None, thinlto_index=None, thinlto_input_bitcode_file=None, thinlto_output_object_file=None, use_pic=False, add_legacy_cxx_options=False, variables_extension=unbound)
參數
參數 | 說明 |
---|---|
cc_toolchain
|
我們要建立的建構變數所需的 cc_toolchain。 |
feature_configuration
|
必填 要查詢的特徵設定。 |
source_file
|
預設為 None 編譯的選用來源檔案。請盡量在此處傳遞 source_file,而不要將其附加至從 cc_common.get_memory_inefficient_command_line 產生的指令列結尾,因為這樣一來,工具鍊作者就能正確指定及定位編譯器標記。 |
output_file
|
預設為 None 編譯的選用輸出檔案。請盡量在此處傳遞 output_file,而不要將其附加至從 cc_common.get_memory_inefficient_command_line 產生的指令列結尾,因為這樣一來,工具鍊作者就能正確指定及定位編譯器標記。 |
user_compile_flags
|
字串的序列;或 None ;預設為 None 。 額外編譯旗標 (copts) 的清單。 |
include_directories
|
depset;或 None ;
預設為 None Depset 的包含目錄。 |
quote_include_directories
|
depset 或 None ;
預設為 None 。 Depset 的引號包含目錄。 |
system_include_directories
|
depset;或 None ;
預設為 None Depset 的系統包含目錄。 |
framework_include_directories
|
depset;或 None ;
預設為 None Depset 的架構包含目錄。 |
preprocessor_defines
|
depset;或 None ;預設為 None 。 前置處理器定義的 Depset。 |
thinlto_index
|
字串;或 None ;預設為 None LTO 索引檔案路徑。 |
thinlto_input_bitcode_file
|
字串或 None ;預設為 None 。 Bitcode 檔案會輸入至 LTO 後端。 |
thinlto_output_object_file
|
字串或 None ;預設為 None 。由 LTO 後端輸出的物件檔案。 |
use_pic
|
預設為 False 如果設為 true,編譯作業會產生位置無關的程式碼。 |
add_legacy_cxx_options
|
預設為 False 。 未使用。 |
variables_extension
|
字典;預設為 unbound 。 這是一個字典,其中包含編譯動作使用的額外變數。 |
create_library_to_link
LibraryToLink cc_common.create_library_to_link(actions, feature_configuration=None, cc_toolchain=None, static_library=None, pic_static_library=None, dynamic_library=None, interface_library=None, pic_objects=unbound, objects=unbound, alwayslink=False, dynamic_library_symlink_path='', interface_library_symlink_path='')
LibraryToLink
參數
參數 | 說明 |
---|---|
actions
|
必須的 actions 物件。 |
feature_configuration
|
預設為 None feature_configuration 要查詢。
|
cc_toolchain
|
預設是 None CcToolchainInfo 要使用的提供者。 |
static_library
|
File 或 None ;預設為要連結的靜態資料庫的 None File 。 |
pic_static_library
|
File 或 None ;預設為要連結的 pic 靜態資料庫的 None File 。 |
dynamic_library
|
File 或 None ;預設為要連結的動態資料庫的 None File 。一律用於執行階段,如果未傳遞 interface_library ,則用於連結。 |
interface_library
|
File 或 None ;預設為要連結的介面程式庫的 None File 。 |
pic_objects
|
File 的序列;預設為 unbound 。為實驗功能,請勿使用。 |
objects
|
File 的序列;預設為 unbound 。為實驗功能,請勿使用。 |
alwayslink
|
預設為 False 是否要在 --whole_archive 區塊中連結靜態資料庫/物件。 |
dynamic_library_symlink_path
|
字串;預設值為 '' 。 覆寫 solib 目錄中動態程式庫連結的預設路徑。空字串可使用預設值。 |
interface_library_symlink_path
|
預設為 '' 覆寫 solib 目錄中介面程式庫連結的預設路徑。空字串可使用預設值。 |
create_link_variables
Variables cc_common.create_link_variables(cc_toolchain, feature_configuration, library_search_directories=None, runtime_library_search_directories=None, user_link_flags=None, output_file=None, param_file=None, def_file=None, is_using_linker=True, is_linking_dynamic_library=False, must_keep_debug=True, use_test_only_flags=False, is_static_linking_mode=True)
參數
參數 | 說明 |
---|---|
cc_toolchain
|
我們要建立的建構變數所需的 cc_toolchain。 |
feature_configuration
|
必填 要查詢的特徵設定。 |
library_search_directories
|
None 或 depset;預設為 None 。 Depset 是目錄的集合,連結器會在連結時在此目錄中尋找程式庫。 |
runtime_library_search_directories
|
None ;或 depset;
預設為 None Depset 是目錄,載入器會在執行階段尋找程式庫。 |
user_link_flags
|
None 或 sequence;預設為 None 。 其他連結標記 (linkopts) 清單。 |
output_file
|
預設為 None (選用) 輸出檔案路徑。 |
param_file
|
預設為 None (選用) 參數檔案路徑。 |
def_file
|
預設為 None (選用) .def 檔案路徑。 |
is_using_linker
|
預設為 True 如果使用連結器,則為 True;如果使用封存器,則為 False。呼叫端負責讓這項資訊與所使用的動作名稱保持同步 (is_using_linker = True 表示連結可執行或動態程式庫,is_using_linker = False 表示封存靜態程式庫)。 |
is_linking_dynamic_library
|
預設值為 False 如果是建立動態資料庫,則為 True;如果是可執行或靜態資料庫,則為 False。呼叫端負責讓這項資訊與所使用的動作名稱保持同步。在 b/65151735 修正後,這個欄位就會移除。 |
must_keep_debug
|
預設為 True 如果設為 False,bazel 就會公開 'strip_debug_symbols' 變數,通常用於使用連結器從輸出檔案中移除偵錯符號。 |
use_test_only_flags
|
預設為 False 如果設為 true,系統會設定「is_cc_test」變數。 |
is_static_linking_mode
|
預設為 True 。 未使用。 |
create_linker_input
LinkerInput cc_common.create_linker_input(owner, libraries=None, user_link_flags=None, additional_inputs=None)
LinkerInput
。
參數
參數 | 說明 |
---|---|
owner
|
required 產生此輸入內容中所有檔案的目標標籤。 |
libraries
|
None 或 depset;預設為 None 。 列出 LibraryToLink 。
|
user_link_flags
|
None ;或 string 的 depset;或 string 的 sequence;
預設為 None User link flags 會以字串形式傳遞。接受 [String]、[[String]] 或 depset(String)。我們不建議使用後者,因為它只會保留用於相容性,depset 會被扁平化。如果您想透過未扁平化的 depsets() 傳播 user_link_flags,請將這些項目包裝在 LinkerInput 中,這樣系統就不會在最後扁平化這些項目。 |
additional_inputs
|
None ;或 depset;
預設為 None (連結動作的其他輸入內容,例如連結指令碼)。 |
create_linking_context
LinkingContext cc_common.create_linking_context(linker_inputs=None, libraries_to_link=None, user_link_flags=None, additional_inputs=None)
LinkingContext
。
參數
參數 | 說明 |
---|---|
linker_inputs
|
None ;或 depset;
預設為 None Depset 的 LinkerInput 。
|
libraries_to_link
|
None ;或序列;預設為 None 。已淘汰。這個參數已淘汰,並將在近期內移除。請勿依賴這項功能。 --+incompatible_require_linker_input_cc_api 會停用。使用這個標記,確認您的程式碼與即將移除的標記相容。LibraryToLink 清單。
|
user_link_flags
|
None ;或序列;預設為 None 。已淘汰。這個參數已淘汰,並將在近期內移除。請勿依賴這項功能。 --+incompatible_require_linker_input_cc_api 會停用。使用這個標記,確認您的程式碼與即將移除的標記相容。以字串形式傳遞的使用者連結標記清單。 |
additional_inputs
|
None ;或序列;預設為 None 。已淘汰。這個參數已淘汰,並將在近期內移除。請勿依賴這項功能。 --+incompatible_require_linker_input_cc_api 會停用。使用這個標記,確認您的程式碼與即將移除的標記相容。連結動作的其他輸入內容,例如連結指令碼。 |
create_linking_context_from_compilation_outputs
tuple cc_common.create_linking_context_from_compilation_outputs(actions, feature_configuration, cc_toolchain, compilation_outputs, user_link_flags=[], linking_contexts=[], name, language='c++', alwayslink=False, additional_inputs=[], disallow_static_libraries=False, disallow_dynamic_library=False)
CcLinkingContext
, CcLinkingOutputs
) 的元組。
參數
參數 | 說明 |
---|---|
actions
|
必須的 actions 物件。 |
feature_configuration
|
feature_configuration 進行查詢。 |
cc_toolchain
|
CcToolchainInfo 供應器。 |
compilation_outputs
|
必填 包含要連結的物件檔案的編譯輸出內容。 |
user_link_flags
|
預設為 [] Additional list of linking options. |
linking_contexts
|
預設為 [] Library 來自依附元件。這些程式庫會連結至 link() 呼叫的輸出成品,無論是二進位檔或程式庫皆然。 |
name
|
必填 這個屬性用於命名這個方法建立的動作輸出構件。 |
language
|
預設值為 'c++' 現在僅支援 C++。請勿使用這項參數。 |
alwayslink
|
預設為 False 是否應一律連結此程式庫。 |
additional_inputs
|
預設為 [] (例如連結指令碼) 等連結動作的其他輸入內容。 |
disallow_static_libraries
|
預設為 False 是否應建立靜態資料庫。 |
disallow_dynamic_library
|
預設值為 False 是否應建立動態資料庫。 |
do_not_use_tools_cpp_compiler_present
None
cc_common.do_not_use_tools_cpp_compiler_present
get_environment_variables
dict cc_common.get_environment_variables(feature_configuration, action_name, variables)
參數
參數 | 說明 |
---|---|
feature_configuration
|
必填 要查詢的特徵設定。 |
action_name
|
必要 動作名稱。必須是 @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) 中的其中一個名稱 |
variables
|
必要 建構要用於範本展開的變數。 |
get_execution_requirements
sequence cc_common.get_execution_requirements(feature_configuration, action_name)
參數
參數 | 說明 |
---|---|
feature_configuration
|
必填 要查詢的特徵設定。 |
action_name
|
必要 動作名稱。必須是 @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) 中的其中一個名稱 |
get_memory_inefficient_command_line
sequence cc_common.get_memory_inefficient_command_line(feature_configuration, action_name, variables)
參數
參數 | 說明 |
---|---|
feature_configuration
|
必填 要查詢的特徵設定。 |
action_name
|
必要 動作名稱。必須是 @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) 中的其中一個名稱 |
variables
|
required 建立用於範本展開的變數。 |
get_tool_for_action
string cc_common.get_tool_for_action(feature_configuration, action_name)
參數
參數 | 說明 |
---|---|
feature_configuration
|
必填 要查詢的特徵設定。 |
action_name
|
必要 動作名稱。必須是 @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) 中的其中一個名稱 |
is_enabled
bool cc_common.is_enabled(feature_configuration, feature_name)
參數
參數 | 說明 |
---|---|
feature_configuration
|
必填 要查詢的特徵設定。 |
feature_name
|
required 功能名稱。 |
連結
CcLinkingOutputs cc_common.link(actions, feature_configuration, cc_toolchain, compilation_outputs=None, user_link_flags=[], linking_contexts=[], name, language='c++', output_type='executable', link_deps_statically=True, stamp=0, additional_inputs=[], additional_outputs=unbound)
參數
參數 | 說明 |
---|---|
actions
|
必須的 actions 物件。 |
feature_configuration
|
feature_configuration 進行查詢。 |
cc_toolchain
|
CcToolchainInfo 供應器。 |
compilation_outputs
|
CcCompilationOutputs 或 None ;預設為 None 。包含要連結的物件檔案的編譯輸出內容。 |
user_link_flags
|
預設為 [] Additional list of linker options. |
linking_contexts
|
預設為 [] 將依附元件的連結內容連結至此規則產生的連結內容。 |
name
|
必填 這個屬性用於命名這個方法建立的動作輸出構件。 |
language
|
預設值為 'c++' 現在僅支援 C++。請勿使用這項參數。 |
output_type
|
預設為 'executable' 可以是「executable」或「dynamic_library」。 |
link_deps_statically
|
預設值為 True 如果為 True,則會靜態連結依附元件,如果為 False,則會動態連結依附元件。 |
stamp
|
預設值為 0 如果 output_type 為「executable」,則是否要在連結的執行檔中加入建構資訊。如果為 1,系統一律會加入建構資訊。如果為 0,系統一律會排除預設的建構資訊。如果為 -1,則會使用預設行為,但可能會遭到 --[no]stamp 標記覆寫。產生可執行的測試規則輸出內容時,應取消設定 (或設為 0)。 |
additional_inputs
|
sequence 或 depset;預設為 [] 。 如果是連結動作的其他輸入內容,例如連結指令碼。 |
additional_outputs
|
序列;預設值為 unbound 。 (連結動作的其他輸出內容,例如地圖檔案)。 |
merge_compilation_contexts
CompilationContext cc_common.merge_compilation_contexts(compilation_contexts=[])
CompilationContexts
合併為一個。
參數
參數 | 說明 |
---|---|
compilation_contexts
|
預設為 [] 要合併的 CompilationContexts 清單。每個結構定義的標頭都會透過傳回提供者的直接欄位匯出。 |
merge_compilation_outputs
CcCompilationOutputs cc_common.merge_compilation_outputs(compilation_outputs=[])
參數
參數 | 說明 |
---|---|
compilation_outputs
|
預設值為 [] |