BazelToolchain¶
警告
此功能为实验性功能,可能会有重大更改。 请参阅 Conan 稳定性 部分以获取更多信息。
BazelToolchain
是 Bazel 的工具链生成器。 它将生成一个 conan_bzl.rc
文件,其中包含一个构建配置 conan-config
,用于将所有参数注入到 bazel build 命令中。
BazelToolchain
生成器可以通过名称在 conanfile 中使用
class Pkg(ConanFile):
generators = "BazelToolchain"
[generators]
BazelToolchain
它也可以在 conanfile 的 generate()
方法中完全实例化
from conan import ConanFile
from conan.tools.google import BazelToolchain
class App(ConanFile):
settings = "os", "arch", "compiler", "build_type"
def generate(self):
tc = BazelToolchain(self)
tc.generate()
生成的文件¶
运行 conan install 命令后,BazelToolchain
生成 conan_bzl.rc 文件,其中包含 Bazel 构建参数(这将取决于您当前的 Conan 设置和来自 default profile 的选项)
# Automatic bazelrc file created by Conan
build:conan-config --cxxopt=-std=gnu++17
build:conan-config --dynamic_mode=off
build:conan-config --compilation_mode=opt
Bazel 构建助手 将使用该 conan_bzl.rc
文件来执行使用此配置的调用。 输出命令将如下所示 bazel --bazelrc=/path/to/conan_bzl.rc build --config=conan-config <target>。
参考¶
- class BazelToolchain(conanfile)¶
- 参数:
conanfile –
< ConanFile 对象 >
当前 recipe 对象。 始终使用self
。
- force_pic¶
用于添加 –force_pic=True 的布尔值。 取决于 self.options.shared 和 self.options.fPIC 值
- dynamic_mode¶
用于添加 –dynamic_mode=[“fully”|”off”] 的字符串。 取决于 self.options.shared 值。
- cppstd¶
用于添加 –cppstd=[FLAG] 的字符串。 取决于您的 settings。
- copt¶
用于添加 –copt=flag1 … –copt=flagN 的标志列表
- conlyopt¶
用于添加 –conlyopt=flag1 … –conlyopt=flagN 的标志列表
- cxxopt¶
用于添加 –cxxopt=flag1 … –cxxopt=flagN 的标志列表
- linkopt¶
用于添加 –linkopt=flag1 … –linkopt=flagN 的标志列表
- compilation_mode¶
用于添加 –compilation_mode=[“opt”|”dbg”] 的字符串。 取决于 self.settings.build_type
- compiler¶
用于添加 –compiler=xxxx 的字符串。
- cpu¶
用于添加 –cpu=xxxxx 的字符串。 目前,仅在交叉构建时添加。
- crosstool_top¶
用于添加 –crosstool_top 的字符串。
- generate()¶
创建一个包含一些 bazel-build 配置的
conan_bzl.rc
文件。 最后一个提到的被设置为conan-config
。
conf¶
BazelToolchain
受以下 [conf] 变量的影响
tools.build:cxxflags
将被cxxopt
使用的额外 C++ 标志列表。tools.build:cflags
将被conlyopt
使用的额外的纯 C 标志列表。tools.build:sharedlinkflags
将被linkopt
使用的额外链接器标志列表。tools.build:exelinkflags
将被linkopt
使用的额外链接器标志列表。tools.build:linker_scripts
链接器脚本列表,每个脚本将以-T
为前缀并添加到linkopt
。