使用 CMakeToolchain 和不同生成器:Ninja 示例

本指南演示了如何使用 CMakeToolchain 与预定义的生成器(如 Ninja)一起使用,以及如何配置它以使用不同的生成器。

注意

我们假设您已经在您的系统中安装了 Ninja。 如果您尚未在系统中安装 Ninja,可以使用您的 profile(默认或自定义)中的 Ninja Conan 包,通过添加 tool-requires 来实现。

理解 CMake 生成器

CMake 客户端提供了各种 生成器 来创建构建系统文件。 如果您想使用 CMake 选择的默认生成器以外的生成器,可以配置 tools.cmake.cmaketoolchain:generator

注意

请注意,CMake 客户端与 Conan CMake helper 不同。

要查看您的系统中可用的生成器,请运行

$ cmake --help

您可以在 profile 中配置、直接在命令行中,甚至在您的 全局配置 中设置此配置。

在 profile 中默认使用 Ninja 生成器

首先,让我们创建一个名为 my_custom_profile 的 profile 文件,以便将 Ninja 生成器设置为使用此 profile 构建的所有 Conan 包的默认生成器。

$ conan profile detect --name=my_custom_profile

要在 my_custom_profile profile 中设置 Ninja 生成器为默认值,请在文件中添加 [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

此配置将被传递到由 CMakeToolchain 生成的 conan_toolchain.cmake 文件,然后将使用 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 配置。