BazelToolchain¶
Warning
This feature is experimental and subject to breaking changes. See the Conan stability section for more information.
The BazelToolchain
is the toolchain generator for Bazel. It will generate a conan_bzl.rc
file that contains
a build configuration conan-config
to inject all the parameters into the bazel build command.
The BazelToolchain
generator can be used by name in conanfiles:
class Pkg(ConanFile):
generators = "BazelToolchain"
[generators]
BazelToolchain
And it can also be fully instantiated in the conanfile generate()
method:
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()
Generated files¶
After running conan install command, the BazelToolchain
generates the conan_bzl.rc file
that contains Bazel build parameters (it will depend on your current Conan settings and options from your 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
The Bazel build helper will use that conan_bzl.rc
file to perform a call using this
configuration. The outcoming command will look like this bazel --bazelrc=/path/to/conan_bzl.rc build --config=conan-config <target>.
Reference¶
- class BazelToolchain(conanfile)¶
- Parameters:
conanfile –
< ConanFile object >
The current recipe object. Always useself
.
- force_pic¶
Boolean used to add –force_pic=True. Depends on self.options.shared and self.options.fPIC values
- dynamic_mode¶
String used to add –dynamic_mode=[“fully”|”off”]. Depends on self.options.shared value.
- cppstd¶
String used to add –cppstd=[FLAG]. Depends on your settings.
- copt¶
List of flags used to add –copt=flag1 … –copt=flagN
- conlyopt¶
List of flags used to add –conlyopt=flag1 … –conlyopt=flagN
- cxxopt¶
List of flags used to add –cxxopt=flag1 … –cxxopt=flagN
- linkopt¶
List of flags used to add –linkopt=flag1 … –linkopt=flagN
- compilation_mode¶
String used to add –compilation_mode=[“opt”|”dbg”]. Depends on self.settings.build_type
- compiler¶
String used to add –compiler=xxxx.
- cpu¶
String used to add –cpu=xxxxx. At the moment, it’s only added if cross-building.
- crosstool_top¶
String used to add –crosstool_top.
- generate()¶
Creates a
conan_bzl.rc
file with some bazel-build configuration. This last mentioned is put asconan-config
.
conf¶
BazelToolchain
is affected by these [conf] variables:
tools.build:cxxflags
list of extra C++ flags that will be used bycxxopt
.tools.build:cflags
list of extra of pure C flags that will be used byconlyopt
.tools.build:sharedlinkflags
list of extra linker flags that will be used bylinkopt
.tools.build:exelinkflags
list of extra linker flags that will be used bylinkopt
.tools.build:linker_scripts
list of linker scripts, each of which will be prefixed with-T
and added tolinkopt
.