cc_common

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。
提供 C++ 编译、链接和命令行生成的实用程序。

会员

action_is_enabled(已启用)

bool cc_common.action_is_enabled(feature_configuration, action_name)

如果已在功能配置中启用指定的 action_config,则返回 True。

参数

参数 说明
feature_configuration 必需
要查询的功能配置。
action_name 必需
action_config 的名称。

抄送工具链信息

Provider cc_common.CcToolchainInfo

用于检索提供程序的键,该提供程序包含所使用的 C++ 工具链的相关信息

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=[], compilation_contexts=[], name, disallow_pic_outputs=False, disallow_nopic_outputs=False, additional_inputs=[], grep_includes=None)

应用于 C++ 编译。返回 (CompilationContext, CcCompilationOutputs) 的元组。

参数

参数 说明
actions 必需
actions 对象。
feature_configuration 需要
可以查询 feature_configuration
cc_toolchain 需要使用
CcToolchainInfo 提供程序。
srcs default = []
要编译的源文件列表。
public_hdrs default = []
编译 src 所需的标头列表,且可能会以传递方式纳入依赖规则。
private_hdrs default = []
编译 src 所需且不可包含在相关规则中的标头列表。
includes default = []
尖括号和引号引用的头文件搜索路径。通常使用 -I 传递。以传递方式向家属传播。
quote_includes default = []
搜索用英文引号引用的头文件的路径,例如 #include "foo/bar/header.h"。它们可以是相对于执行根目录或绝对值的相对路径。通常使用 -iquote 传递。以传递方式向家属传播。
system_includes default = []
搜索用尖括号引用的头文件(例如 #include <foo/bar/header.h>)的路径。它们可以是相对于执行根目录或绝对路径而言的。通常使用 -isystem 传递。以传递方式向家属传播。
framework_includes default = []
Apple 框架中的头文件搜索路径。它们可以是相对于执行根目录或绝对值的相对路径。通常使用 -F 传递。以传递方式向家属传播。
defines default = []
编译此目标所需的一组定义。每个定义都是一个字符串。以传递方式向家属传播。
local_defines default = []
编译此目标所需的一组定义。每个定义都是一个字符串。不以传递方式向依赖项传播。
include_prefix default = ''
要添加到此规则的标头路径中的前缀。设置后,此规则的 hdrs 属性中的标头可访问为用作其相对代码库路径的该属性的值。在添加此前缀之前,系统会移除 trip_include_prefix 属性中的前缀。
strip_include_prefix default = ''
要从此规则的标头路径中移除的前缀。设置后,此规则的 hdrs 属性中的标头可通过其前缀被截断,访问。如果路径是相对路径,则被视为与软件包相对的路径。如果它是绝对路径,它会被理解为存储库相对路径。删除此前缀后,系统就会添加 include_prefix 属性中的前缀。
user_compile_flags default = []
其他编译选项列表。
compilation_contexts default = []
用于编译的依赖项的头文件。
name 必需
此方法用于为使用此方法创建的操作的输出工件命名。另请参阅“main_output”参数。
disallow_pic_outputs default = False
是否应创建 PIC 输出。
disallow_nopic_outputs default = False
是否应创建 NOPIC 输出。
additional_inputs default = []
编译 src 所需的其他文件列表
grep_includes File; or None;默认值 = None

配置功能

FeatureConfiguration cc_common.configure_features(ctx=None, cc_toolchain, language=None, requested_features=[], unsupported_features=[])

创建 feature_configuration 实例。需要 cpp 配置 fragment。

参数

参数 说明
ctx ctx; or None;默认值 = None
规则上下文。
cc_toolchain 必需
为其配置功能的 cc_toolchain。
language string; or None;默认 = 无
要配置的语言:c++ 或 objc(默认 c++)
requested_features default = []
要启用的功能列表。
unsupported_features default = []
当前规则不支持的功能列表。

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 default = []
功能列表。
action_configs default = []
action_configs 列表。
artifact_name_patterns default = []
artifact_name_patterns 的列表。
cxx_builtin_include_directories 默认值 = []

用于 C++ 编译的内置 include 目录。这些应该是编译器使用的确切路径,并且通常相对于执行根目录。

编译器使用的路径可通过 'gcc -E -xc++ - -v' 确定。

我们目前还使用 C++ 路径进行 C 编译,只要 C++ 和 C 头文件之间没有名称冲突,这种做法是安全的。

相对路径相对于配置文件目录进行解析。

如果编译器支持 --sysroot,则这些路径应使用 %sysroot%(而非 include 路径),并指定 sysroot 属性,以便向 blaze 提供进行正确替换所需的信息。

toolchain_identifier 必需

跨工具版本中的工具链的唯一标识符。该路径必须可以用作路径中的目录名称。

必须与以下正则表达式匹配:[a-zA-Z_][\.\- \w]*

host_system_name string; or None;默认值为“无”
忽略。
target_system_name 必需
GNU 系统名称。
target_cpu 必需
目标架构字符串。
target_libc 必需
libc 版本字符串(例如 "glibc-2.2.2")。
compiler 必需
编译器版本字符串(例如 "gcc-4.1.1")。
abi_version string; or None;默认值 = None
正在使用的 abi,这是 gcc 版本。例如:&ccot;gcc-3.4”
abi_libc_version string; or None;默认值为默认值 None
我们使用的 abi 使用的 glibc 版本。
tool_paths default = []
tool_paths 的列表。
make_variables default = []
make_variables 的列表。
builtin_sysroot string; or None;默认值为 None
内置 sysroot。如果此属性不存在,则 Bazel 不允许使用其他 sysroot,即通过 --grte_top 选项使用。
cc_target_os string; or None; default = None
仅供内部使用,请勿使用。

create_compile_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 default = unbound
编译此目标所需的一组头文件
system_includes default = unbound
用尖括号引用的头文件集的搜索路径,即 #include <foo/bar/header.h>。它们可以相对于 exec 根目录或绝对路径。通常使用 -isystem 传递
includes 默认值 = 未绑定
尖括号和引号引用的头文件集搜索路径。通常使用 -I 进行传递
quote_includes default = unbound
用英文引号括起来的头文件(例如 #include "foo/bar/header.h&quot>)的搜索路径。它们可以是相对于执行根目录或绝对值的相对路径。通常使用 -iquote 传递
framework_includes 默认值 = 未绑定
头文件的框架搜索路径集(仅限 Apple 平台)
defines default = unbound
编译此目标所需的一组定义。每个定义都是一个字符串。以传递方式向依赖项传播。
local_defines default = unbound
编译此目标所需的一组定义。每个定义都是一个字符串。不以传递方式传递给依赖项。

create_compile_outputs

CcCompilationOutputs cc_common.create_compilation_outputs(objects=None, pic_objects=None)

创建编译输出对象。

参数

参数 说明
objects depset; or None;默认值为默认值“无”
对象文件列表。
pic_objects depset; or None;默认值为 None
图形对象文件列表。

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 default = None
编译的可选源文件。最好在此处传递 source_file,而不是将其附加到从 cc_common.get_memory_inefficiency_command_line 生成的命令行末尾,因为这样一来,工具链作者就可以正确指定和定位编译器标志。
output_file default = None
编译的可选输出文件。最好在此处传递 output_file,而不是将其附加到从 cc_common.get_memory_inefficiency_command_line 生成的命令行末尾,因为这样工具链工具链作者就可以正确指定和定位编译器标志。
user_compile_flags sequence of strings; or None; default = None
其他编译标记 (copt) 的列表。
include_directories depset; or None;默认值为默认值 无
包含目录的子集。
quote_include_directories depset; or None;默认值为默认值 无
报价包含目录。
system_include_directories depset; or None;默认值 = None
系统包含目录的偏移量。
framework_include_directories depset; or None;默认值 = None
框架包含目录的子集。
preprocessor_defines depset; or None;默认值为默认值“无”。
预处理器定义的偏移量。
thinlto_index string; or None;默认值 = None
LTO 索引文件路径。
thinlto_input_bitcode_file string; or None;默认值 = None
输入到 LTO 后端的位码文件。
thinlto_output_object_file string; or None;默认值为 None
LTO 后端输出的对象文件。
use_pic default = False
若为 true,编译将生成与位置无关的代码。
add_legacy_cxx_options default = False
未使用。
variables_extension dict;default = unbound
编译操作使用的其他变量的字典。

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 default = None
feature_configuration 将查询。
cc_toolchain default = None
CcToolchainInfo 提供程序要使用的值。
static_library File; or None;默认值为 None
要关联的静态库的 File
pic_static_library File; or None;默认值为 None
要关联的图片静态库的 File
dynamic_library File; or None; default = None
要关联的动态库的 File。始终用于运行时,如果未传递 interface_library,则用于关联。
interface_library File; or None; default = None
要关联的接口库的 File
pic_objects sequence of Files;默认值 = 未绑定
实验性,不使用
objects sequence of Files;默认值 = 未绑定
实验性,不使用
default = False
是否链接 --whole_archive 块中的静态库/对象。
string; default = ''
替换 Solib 目录中动态库链接的默认路径。空字符串可使用默认值。
default = ''
替换 Solib 目录中接口库链接的默认路径。空字符串可使用默认值。

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。
必需
要查询的功能配置。
None; or depset;默认值 = None
在链接时链接器将查找库的目录。
None; or depset;默认值为 None
加载器将在运行时查找库的目录的偏好设置。
None; or sequence;默认值 = None
其他链接标志 (linkopts) 列表。
default = None
可选输出文件路径。
default = None
可选的参数文件路径。
default = None
可选 .def 文件路径。
default = True
使用链接器时为 True,归档器时为 False。调用方负责使其与使用的操作名称保持同步(is_using_linker = True 用于关联可执行文件或动态库,is_using_linker = false 用于归档静态库)。
default = False
在创建动态库时为 True,当可执行文件或静态库时为 False。调用方负责使其与使用的操作名称保持同步。在 b/65151735 修复后,此字段将被移除。
default = True
设置为 True 时,bazel 将公开 'strip_debug_symbols' 变量,该变量通常使用链接器从输出文件中剥离调试符号。
default = False
如果设置为 true,将设置 'is_cc_test' 变量。
default = True
未使用。

create_linker_input

LinkerInput cc_common.create_linker_input(owner, libraries=None, user_link_flags=None, additional_inputs=None)

创建 LinkerInput

参数

参数 说明
owner 必需
生成此输入中使用的所有文件的目标的标签。
libraries None; or depset;默认值为 None
LibraryToLink 列表。
None; or depset of strings; or sequence of strings;默认值 = None
以字符串形式传递的用户链接标志。接受 [String]、[[String]] 或 depset(String)。不建议采用后者,因为它只是为了兼容性目的,所以对 dset 是扁平化的。如果您希望通过未扁平化的 depsets() 传播 user_link_flags,请将它们封装在 LinkerInput 中,以使其直到最后才进行扁平化处理。
additional_inputs None; or depset; default = 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; or depset;默认值 = None
设置为 LinkerInput
None; or sequence;默认值 = None
已弃用。此参数已被弃用,很快就会被移除。请勿依赖它。已通过 --+incompatible_require_linker_input_cc_api 将其停用。使用此标志可以验证您的代码是否与其即将移除的代码兼容。
LibraryToLink 列表。
None; or sequence;默认值 = None
已弃用。此参数已被弃用,很快就会被移除。请勿依赖它。已通过 --+incompatible_require_linker_input_cc_api 将其停用。使用此标志可以验证您的代码是否与其即将移除的代码兼容。
以字符串形式传递的用户链接标志列表。
additional_inputs None; or sequence;默认值 = None
已弃用。此参数已被弃用,很快就会被移除。请勿依赖它。已通过 --+incompatible_require_linker_input_cc_api 将其停用。使用此标志可以验证您的代码是否与其即将移除的代码兼容。
关于关联操作的额外输入,例如关联脚本。

create_linking_context_from_compile_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, grep_includes=None)

应用于创建可传播下游信息的库规则,以便随后通过执行传递链接以创建可执行或动态库的顶级规则进行链接。返回 (CcLinkingContext, CcLinkingOutputs) 的元组。

参数

参数 说明
actions 必需
actions 对象。
feature_configuration 需要
可以查询 feature_configuration
cc_toolchain 需要使用
CcToolchainInfo 提供程序。
compilation_outputs 必需
包含要关联的对象文件的编译输出。
default = []
其他关联选项列表。
linking_contexts default = []
依赖项中的库。这些库将链接到 link() 调用的输出工件,无论是二进制文件还是库。
name 必需
此方法用于为使用此方法创建的操作的输出工件命名。
language default = 'c++'
目前仅支持 C++。请勿使用此参数。
default = False
是否应始终关联该库。
additional_inputs default = []
用于关联操作的其他输入,例如:链接脚本。
disallow_static_libraries default = False
是否应创建静态库。
disallow_dynamic_library default = False
是否应创建动态库。
grep_includes File; or None;默认值 = None

do_not_use_tools_cpp_compiler_present

None cc_common.do_not_use_tools_cpp_compiler_present

请勿使用此字段,它的唯一目的是帮助从 config_setting.values{'compiler') 迁移到 config_settings.flag_values{'@bazel_tools//tools/cpp:compiler'}

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_inefficiency_command_line

sequence cc_common.get_memory_inefficient_command_line(feature_configuration, action_name, variables)

针对指定的操作返回扁平化命令行标记,使用给定变量进行扩展。展平嵌套集,理想情况下不应使用,或至少不应超过分析时间。我们正在开发返回 Args 的内存效率函数。

参数

参数 说明
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_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)

如果在功能配置中启用了给定功能,则返回 True。

参数

参数 说明
feature_configuration 必需
要查询的功能配置。
feature_name 必需
功能的名称。

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=[], grep_includes=None, additional_outputs=unbound)

应该用于 C++ 传递链接。

参数

参数 说明
actions 必需
actions 对象。
feature_configuration 需要
可以查询 feature_configuration
cc_toolchain 需要使用
CcToolchainInfo 提供程序。
compilation_outputs CcCompilationOutputs; or None;默认值为“无”
包含要关联的对象文件的编译输出。
default = []
链接器选项的其他列表。
linking_contexts default = []
将依赖项中的上下文链接到要通过此规则生成的链接上下文。
name 必需
此方法用于为使用此方法创建的操作的输出工件命名。
language default = 'c++'
目前仅支持 C++。请勿使用此参数。
output_type default = 'executable'
可以是 'executable' 或 'dynamic_library'。
default = True
True 可静态关联依赖项,False 可动态关联。
stamp default = 0
如果输出类型是 'executable',是否在关联的可执行文件中包含构建信息。如果为 1,则始终包含 build 信息。如果为 0(始终排除默认 build 信息),如果为 -1,则使用默认行为(可以替换为 --[no]stamp 标志)。为测试规则生成可执行输出时,应取消设置(或设置为 0)。
additional_inputs sequence; or depset;默认值为 []
。对于关联操作的其他输入,例如关联脚本。
grep_includes File; or None;默认值 = None
additional_outputs sequence;默认值 = unbound
关联操作的其他输出,例如:映射文件。

合并抄送信息

CcInfo cc_common.merge_cc_infos(direct_cc_infos=[], cc_infos=[])

将多个 CcInfo 合并为一个。

参数

参数 说明
direct_cc_infos default = []
要合并的 CcInfo 的列表,其标头将由返回的提供程序中的直接字段导出。
cc_infos default = []
要合并的 CcInfo 的列表,其标头将不会通过返回的提供程序中的直接字段导出。

merge_compile_contexts

CompilationContext cc_common.merge_compilation_contexts(compilation_contexts=[])

将多个 CompilationContexts 合并为一个。

参数

参数 说明
compilation_contexts default = []
要合并的 CompilationContexts 的列表。每个上下文的标头都将由返回的提供程序中的直接字段导出。

merge_compile_outputs

CcCompilationOutputs cc_common.merge_compilation_outputs(compilation_outputs=[])

合并编译输出。

参数

参数 说明
compilation_outputs 默认值 = []