CMake¶
The CMake build helper is a wrapper around the command line invocation of cmake. It will abstract the
calls like cmake --build . --config Release into Python method calls. It will also add the argument
-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake (from the generator CMakeToolchain) to the configure() call,
as well as other possible arguments like -DCMAKE_BUILD_TYPE=<config>. The arguments that will be used are obtained from a
generated CMakePresets.json file.
The helper is intended to be used in the build() method, to call CMake commands automatically
when a package is being built directly by Conan (create, install)
from conan import ConanFile
from conan.tools.cmake import CMake, CMakeToolchain, CMakeDeps
class App(ConanFile):
    settings = "os", "arch", "compiler", "build_type"
    requires = "hello/0.1"
    options = {"shared": [True, False], "fPIC": [True, False]}
    default_options = {"shared": False, "fPIC": True}
    def generate(self):
        tc = CMakeToolchain(self)
        tc.generate()
        deps = CMakeDeps(self)
        deps.generate()
    def build(self):
        cmake = CMake(self)
        cmake.configure()
        cmake.build()
Reference¶
- class CMake(conanfile)¶
- CMake helper to use together with the CMakeToolchain feature - Parameters:
- conanfile – The current recipe object. Always use - self.
 - configure(variables=None, build_script_folder=None, cli_args=None, stdout=None, stderr=None)¶
- Reads the - CMakePresets.jsonfile generated by the :param cli_args: Extra CLI arguments to pass to cmake invocation CMakeToolchain to get:- The generator, to append - -G="xxx".
- The path to the toolchain and append - -DCMAKE_TOOLCHAIN_FILE=/path/conan_toolchain.cmake
- The declared - cache variablesand append- -Dxxx.
 - and call - cmake.- Parameters:
- variables – Should be a dictionary of CMake variables and values, that will be mapped to command line - -DVAR=VALUEarguments. Recall that in the general case information to CMake should be passed in- CMakeToolchainto be provided in the- conan_toolchain.cmakefile. This- variablesargument is intended for exceptional cases that wouldn’t work in the toolchain approach.
- build_script_folder – Path to the CMakeLists.txt in case it is not in the declared - self.folders.sourceat the- layout()method.
- cli_args – List of extra arguments provided when calling to CMake. 
- stdout – Use it to redirect stdout to this stream 
- stderr – Use it to redirect stderr to this stream 
 
 
 - build(build_type=None, target=None, cli_args=None, build_tool_args=None, stdout=None, stderr=None)¶
- Parameters:
- build_type – Use it only to override the value defined in the - settings.build_typefor a multi-configuration generator (e.g. Visual Studio, XCode). This value will be ignored for single-configuration generators, they will use the one defined in the toolchain file during the install step.
- target – The name of a single build target as a string, or names of multiple build targets in a list of strings to be passed to the - --targetargument.
- cli_args – A list of arguments - [arg1, arg2, ...]that will be passed to the- cmake --build ... arg1 arg2command directly.
- build_tool_args – A list of arguments - [barg1, barg2, ...]for the underlying build system that will be passed to the command line after the- --indicator:- cmake --build ... -- barg1 barg2
- stdout – Use it to redirect stdout to this stream 
- stderr – Use it to redirect stderr to this stream 
 
 
 - install(build_type=None, component=None, cli_args=None, stdout=None, stderr=None)¶
- Equivalent to run - cmake --build . --target=install- Parameters:
- component – The specific component to install, if any 
- build_type – Use it only to override the value defined in the settings.build_type. It can fail if the build is single configuration (e.g. Unix Makefiles), as in that case the build type must be specified at configure time, not build type. 
- cli_args – A list of arguments - [arg1, arg2, ...]for the underlying build system that will be passed to the command line:- cmake --install ... arg1 arg2
- stdout – Use it to redirect stdout to this stream 
- stderr – Use it to redirect stderr to this stream 
 
 
 - test(build_type=None, target=None, cli_args=None, build_tool_args=None, env='', stdout=None, stderr=None)¶
- Equivalent to running cmake –build . –target=RUN_TESTS. - Parameters:
- build_type – Use it only to override the value defined in the - settings.build_type. It can fail if the build is single configuration (e.g. Unix Makefiles), as in that case the build type must be specified at configure time, not build time.
- target – Name of the build target to run, by default - RUN_TESTSor- test
- cli_args – Same as above - build()
- build_tool_args – Same as above - build()
- stdout – Use it to redirect stdout to this stream 
- stderr – Use it to redirect stderr to this stream 
 
 
 - ctest(cli_args=None, env='', stdout=None, stderr=None)¶
- Equivalent to running ctest … - Parameters:
- cli_args – Extra ctest command line arguments 
- env – the environment files to activate, by default conanbuild + conanrun 
- stdout – Use it to redirect stdout to this stream 
- stderr – Use it to redirect stderr to this stream 
 
 
 
conf¶
The CMake() build helper is affected by these [conf] variables:
- tools.build:verbositywill accept one of- quietor- verboseto be passed to the- CMake.build()command, when a Visual Studio generator (MSBuild build system) is being used for CMake. It is passed as an argument to the underlying build system via the call- cmake --build . --config Release -- /verbosity:Diagnostic
- tools.compilation:verbositywill accept one of- quietor- verboseto be passed to CMake, which sets- -DCMAKE_VERBOSE_MAKEFILEif- verbose
- tools.build:jobsargument for the- --jobsparameter when running Ninja generator.
- tools.microsoft.msbuild:max_cpu_countargument for the- /m(- /maxCpuCount) when running- MSBuild
- tools.cmake:cmake_programspecify the location of the CMake executable, instead of using the one found in the- PATH.
- tools.cmake:install_stripwill pass- --stripto the- cmake --installcall if set to- True.