CMake¶
CMake
构建助手是 cmake 命令行调用的一个封装器。它会将诸如 cmake --build . --config Release
之类的调用抽象为 Python 方法调用。它还会将参数 -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake
(来自生成器 CMakeToolchain
) 添加到 configure()
调用中,以及其他可能的参数,如 -DCMAKE_BUILD_TYPE=<config>
。将要使用的参数从生成的 CMakePresets.json
文件中获得。
该助手旨在 build()
方法中使用,以便在 Conan 直接构建软件包时自动调用 CMake 命令(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()
参考¶
- class CMake(conanfile)¶
CMake 助手,与 CMakeToolchain 功能一起使用
- 参数:
conanfile – 当前的 recipe 对象。始终使用
self
。
- configure(variables=None, build_script_folder=None, cli_args=None, stdout=None, stderr=None)¶
读取由 CMakeToolchain 生成的
CMakePresets.json
文件以获取生成器,以附加
-G="xxx"
。工具链的路径并附加
-DCMAKE_TOOLCHAIN_FILE=/path/conan_toolchain.cmake
声明的
cache variables
并附加-Dxxx
。
并调用
cmake
。- 参数:
variables – 应该是 CMake 变量和值的字典,它们将被映射到命令行
-DVAR=VALUE
参数。 请记住,在一般情况下,应该在CMakeToolchain
中传递给 CMake 的信息,以便在conan_toolchain.cmake
文件中提供。 此variables
参数旨在用于在工具链方法中不起作用的特殊情况。build_script_folder – CMakeLists.txt 的路径,以防它不在
layout()
方法中声明的self.folders.source
中。cli_args – 将作为额外的 CLI 参数传递给 cmake 调用的参数列表
[arg1, arg2, ...]
stdout – 使用它将 stdout 重定向到此流
stderr – 使用它将 stderr 重定向到此流
- build(build_type=None, target=None, cli_args=None, build_tool_args=None, stdout=None, stderr=None)¶
- 参数:
build_type – 仅用于覆盖多配置生成器(例如,Visual Studio,XCode)的
settings.build_type
中定义的值。 对于单配置生成器,此值将被忽略,它们将在安装步骤中使用在工具链文件中定义的值。target – 作为字符串的单个构建目标名称,或作为字符串列表的多个构建目标名称,这些名称将传递给
--target
参数。cli_args – 将直接传递给
cmake --build ... arg1 arg2
命令的参数列表[arg1, arg2, ...]
。build_tool_args – 用于基础构建系统的参数列表
[barg1, barg2, ...]
,该列表将在--
指示符之后传递到命令行:cmake --build ... -- barg1 barg2
stdout – 使用它将 stdout 重定向到此流
stderr – 使用它将 stderr 重定向到此流
- install(build_type=None, component=None, cli_args=None, stdout=None, stderr=None)¶
等效于运行
cmake --install
- 参数:
component – 要安装的特定组件(如果有)
build_type – 仅用于覆盖 settings.build_type 中定义的值。 如果构建是单配置(例如,Unix Makefiles),则可能会失败,因为在这种情况下,必须在配置时指定构建类型,而不是构建类型。
cli_args – 将传递到命令行的基础构建系统的参数列表
[arg1, arg2, ...]
:cmake --install ... arg1 arg2
stdout – 使用它将 stdout 重定向到此流
stderr – 使用它将 stderr 重定向到此流
- test(build_type=None, target=None, cli_args=None, build_tool_args=None, env='', stdout=None, stderr=None)¶
等效于运行 cmake –build . –target=RUN_TESTS.
- 参数:
build_type – 仅用于覆盖
settings.build_type
中定义的值。 如果构建是单配置(例如,Unix Makefiles),则可能会失败,因为在这种情况下,必须在配置时指定构建类型,而不是构建时。target – 要运行的构建目标的名称,默认为
RUN_TESTS
或test
cli_args – 与上面的
build()
相同,是一个参数列表[arg1, arg2, ...]
,将作为额外参数传递给底层构建系统build_tool_args – 与上面的
build()
相同stdout – 使用它将 stdout 重定向到此流
stderr – 使用它将 stderr 重定向到此流
- ctest(cli_args=None, env='', stdout=None, stderr=None)¶
等同于运行 ctest …
- 参数:
cli_args – 参数列表
[arg1, arg2, ...]
,将作为额外的 ctest 命令行参数传递env – 要激活的环境文件,默认为 conanbuild + conanrun
stdout – 使用它将 stdout 重定向到此流
stderr – 使用它将 stderr 重定向到此流
conf¶
CMake()
构建助手受以下 [conf]
变量影响
tools.build:verbosity
将接受quiet
或verbose
之一,以传递给CMake.build()
命令。当 Visual Studio 生成器(MSBuild 构建系统)用于 CMake 时,它将通过调用cmake --build . --config Release -- /verbosity:Diagnostic
作为底层构建系统的参数传递。tools.compilation:verbosity
将接受quiet
或verbose
之一,以传递给 CMake,如果verbose
,则设置-DCMAKE_VERBOSE_MAKEFILE
tools.build:jobs
是运行 Ninja 生成器时--jobs
参数的值。tools.microsoft.msbuild:max_cpu_count
是运行MSBuild
时/m
(/maxCpuCount
) 的参数。 如果max_cpu_count=0
,则将使用没有参数的/m
,这意味着使用所有可用的 cpu。tools.cmake:cmake_program
指定 CMake 可执行文件的位置,而不是使用在PATH
中找到的那个。tools.cmake:install_strip
如果设置为True
,则将--strip
传递给cmake --install
调用。