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 use- self.
 - 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.rcfile with some bazel-build configuration. This last mentioned is put as- conan-config.
 
conf¶
BazelToolchain is affected by these [conf] variables:
- tools.build:cxxflagslist of extra C++ flags that will be used by- cxxopt.
- tools.build:cflagslist of extra of pure C flags that will be used by- conlyopt.
- tools.build:sharedlinkflagslist of extra linker flags that will be used by- linkopt.
- tools.build:exelinkflagslist of extra linker flags that will be used by- linkopt.
- tools.build:linker_scriptslist of linker scripts, each of which will be prefixed with- -Tand added to- linkopt.