使用 CMakeToolchain 和不同的生成器:Ninja 示例¶
本指南演示了如何将 CMakeToolchain 与预定义的生成器(如 Ninja)一起使用,以及如何配置它以使用不同的生成器。
注意
我们假设您已经在系统中安装了 Ninja。如果您系统中没有安装 Ninja,您可以使用您的 profile(默认或自定义)中的 Ninja Conan 软件包,方法是添加 tool-requires。
了解 CMake 生成器¶
CMake 客户端提供了多种生成器来创建构建系统文件。如果您想使用 CMake 默认选择之外的生成器,您可以配置 tools.cmake.cmaketoolchain:generator
。
要查看您的系统上可用的生成器,请运行
$ cmake --help
您可以在您的 profile 中配置,直接在命令行中,甚至在您的 全局配置中设置此配置。
在 profile 中默认使用 Ninja 生成器¶
首先,让我们创建一个名为 my_custom_profile
的 profile 文件,这样我们可以将 Ninja 生成器设置为使用此 profile 构建的所有 Conan 软件包的默认生成器。
$ conan profile detect --name=my_custom_profile
要将 Ninja 生成器设置为 my_custom_profile
profile 中的默认生成器,请在文件中添加带有生成器值的 [conf]
条目
[settings]
os=Linux
arch=x86_64
compiler=gcc
compiler.version=13
compiler.libcxx=libstdc++11
compiler.cppstd=20
build_type=Release
[conf]
tools.cmake.cmaketoolchain:generator=Ninja
现在,我们将创建一个基于 cmake_exe
模板的基本项目,作为 C++ 项目的示例
$ conan new cmake_exe -d name=foo -d version=0.1.0
然后,我们可以使用我们刚刚创建的 profile 构建您的项目
$ conan create . -pr=my_custom_profile
此配置将传递给 conan_toolchain.cmake
文件,该文件由 CMakeToolchain
生成,然后将使用 Ninja 生成器。您应该看到以下输出片段,指示正在使用 Ninja 生成器
Profile host:
[settings]
...
[conf]
tools.cmake.cmaketoolchain:generator=Ninja
...
foo/0.1.0: Calling build()
foo/0.1.0: Running CMake.configure()
foo/0.1.0: RUN: cmake -G "Ninja" ...
请注意,相同的配置可以传递给默认 profile,并用于使用该 profile 构建的所有 Conan 软件包。
如果通过命令行传递生成器配置,则相同的配置将覆盖 profile 配置。