CLion 2025.2 Help

CMake 配置文件

构建 CMake 项目所需的设置已集成到 CMake 配置文件 中。 它包括 toolchain构建 type ,以及 CMake 选项,例如 generatorsenvironment variables

您可以为项目配置多个配置文件,例如使用不同的编译器或以不同的设置构建目标。

访问配置文件设置

执行以下操作之一以打开 CMake 配置文件设置。

  • 转到 设置 | 构建、执行、部署 | CMake

  • Ctrl+Shift+A 打开 查找操作 对话框并搜索 CMake 设置

    在 Find Action 中的 CMake 设置
  • 转到 设置 | 键位图为 CMake 设置分配快捷键。 使用此快捷键快速打开 CMake 设置页面。

    为 CMake 设置分配快捷键

添加新配置文件

  1. 转到 设置 | 构建、执行、部署 | CMake

  2. 点击 ,CLion 将在列表中添加一个新配置文件。

  3. 如有需要,请更改配置文件名称、构建类型和其他设置。

使用配置文件进行构建

  1. 启用的配置文件列在配置文件切换器中。

    在构建、运行或调试应用程序之前选择所需的配置文件。

    配置切换器中的 cmake 配置文件
  2. 点击 或调用可用的 构建操作

    此外,默认情况下,在运行 或调试 之前会执行构建(您可以在配置设置中更改此项)。

为新项目配置默认配置文件

  1. 转到 文件 | 新建项目设置 | 新项目设置 | 构建、执行、部署 | CMake

  2. 配置默认用于所有 新项目的配置文件列表。

共享配置文件

您可以在 VCS 中与项目一起共享 CMake 配置文件。 配置文件的设置存储在 cmake.xml 中的 .idea 目录中。

  • 选择您想要共享的配置文件并设置 共享 复选框:

    共享的 CMake 配置文件

    共享的配置文件会自动移至列表底部。

    请确保共享配置文件和本地配置文件的名称不同。 如果共享配置文件和本地配置文件具有相同的名称,本地配置文件将优先,您将在设置中看不到共享配置文件。

禁用/启用配置文件

您可以禁用当前未使用的配置文件,以节省加载时间并避免潜在错误(例如,当您有一个不经常使用的远程配置文件且机器已关闭时)。

使用以下选项之一:

  • 设置 | 构建、执行、部署 | CMake 中清除或设置 启用配置文件 复选框。 已禁用的配置文件在列表中显示为灰色。

    已禁用的配置文件
  • 要禁用已成功加载的配置文件,请从 CMake 工具窗口的配置菜单中选择 禁用此配置文件

    从 CMake 工具窗口禁用已加载的配置文件

    在此菜单中,您还可以启用任何已禁用的配置文件:

    从 CMake 工具窗口启用已禁用的配置文件

CMake 选项

编译器标志

在 CLion 中,您可以在配置文件的 CMake 选项 字段或 CMakeLists.txt 脚本中指定编译器标志。

  • 使用 CMake 选项:

    设置 | 构建、执行、部署 | CMake 中选择配置文件并编辑 CMake 选项 字段。

    使用 -DCMAKE_CXX_FLAGS 变量(或 CMAKE_C_FLAGS 用于 C 项目)。 例如, -DCMAKE_CXX_FLAGS="-Wall -Wextra"

    在 CMake 选项中设置编译器标志

    CLion 还支持传递给 CMake 选项--preset 参数。 指定的 预设 的数据会加载到构建类型、工具链和构建目录设置中。

  • 或者,您可以在 CMakeLists.txt 中设置编译器标志。

    添加以下命令并包含所需的标志:

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")

CMake 工具链文件

CMake 缓存变量

您可以在 缓存变量 表中查看和编辑 CMake 缓存变量:

CMake 缓存变量

您可以在 CMake 选项 字段或 CMakeLists.txt 文件中添加新变量。 用户定义的变量位于表的顶部。 用户定义变量的值以粗体显示,而其他变量的更改值以斜体显示:

自定义 CMake 变量

要从 CMake 选项 字段中移除变量,请在表中选择它并点击 "移除"按钮 或按 Alt+Delete。 变量将从表中移除,或者其值将在 重置 CMake 缓存 后设置为默认值。

要放弃当前会话中所做的更改,请选择一个变量并点击 还原 图标 或按 Ctrl+Z

高级 CMake 变量默认是隐藏的,但您可以通过选择 显示高级选项 复选框来显示它们:

显示高级 CMake 变量

CLion 还会在工具提示中显示 CMake 缓存变量的简短描述:

带有工具提示的布尔变量

IDE 将布尔值显示为复选框。 在复选框旁边,您可以看到布尔变量背后的实际值。 以下值被视为 False0OFFNONIGNORENOTFOUND 、空字符串以及以后缀 -NOTFOUND 结尾的值。 在所有其他情况下,该值被视为 True

当您在 CLion 用户界面中选中或取消选中复选框时,以下值对用于配置选项值: 0-1OFF-ONNO-YESFALSE-TRUEN-Y。 对于任何其他值,IDE 会将复选框状态转换为 OFF-ON

生成器

生成器 字段中,您可以在 CMake 生成器 之间切换。 使用所选工具链的默认值或从预定义列表中设置另一个生成器:

指定自定义 CMake 生成器

使用默认值

CLion 使用 Ninja 或 Makefiles 作为默认生成器。

Ninja 在以下 所有条件为真时使用:

  • 所选的 工具链 是本地的(这不包括 RemoteDockerWSL)。

  • 为所选工具链配置的构建工具是 Ninja(捆绑的 Ninja 是默认构建工具)。

  • CMake 版本为 3.20 或更高。

  • 项目首次在 CLion 2021.3 中创建或打开。

  • 对于 CMake 3.20 及更高版本使用旧版生成器 复选框在 高级设置 中未设置。

在所有其他情况下,将使用 Makefiles 生成器。

让 CMake 决定

如果您选择此选项,CLion 不会强制显式使用任何生成器,CMake 将决定使用哪个生成器。 默认情况下,这由 CMAKE_GENERATOR 环境变量控制。

或者,您可以通过 CMake 选项-G 设置生成器。 当使用 生成器 字段时,CLion 会自动更新 CMake 选项 ,反之亦然:

CMake 选项中的 CMake 生成器

当前限制

  • CLion 使用 CMake File API ,该 API 首次出现在 CMake v3.14 中。 然而,CLion 从 CMake v3.15 引入的更新开始支持它,因此如果您决定切换捆绑的 CMake,请确保使用 version 3.15.x 或更高版本

  • 对于多配置生成器(如 Ninja Multi-Config、Xcode 或 Visual Studio),CLion 仅使用与 CMake 配置文件中指定的 构建类型 对应的配置(CPP-20890)。

构建类型

使用 构建类型 字段设置以下 CMake 构建类型之一:

  • 默认(对应于 CMAKE_构建_TYPE 的 值)。

  • Debug(默认构建类型)

  • Release

  • RelWithDebInfo(带调试信息的 Release)

  • MinSizeRel(针对大小优化的 Release)

要在 CMakeLists.txt 中引用构建类型,请使用 CMAKE_BUILD_TYPE 变量。 例如:

if (CMAKE_BUILD_TYPE MATCHES Debug) add_definitions(-DDEBUG=1) endif()

您还可以在代码中基于当前构建类型创建条件语句:

int main(int argc, const char* argv[]) { #if DEBUG ... #else ... #endif

自定义构建类型

可用构建类型的列表在 CMAKE_CONFIGURATION_TYPES 命令中定义。 此命令的默认值是上述四种构建类型,但您可以扩展它以包含其他构建类型。 例如:

# adding two custom build types to the cached value # variable CMAKE_CONFIGURATION_TYPES should be defined before other definitions: set(CMAKE_CONFIGURATION_TYPES "MyDebug;MyRelease" CACHE STRING "" FORCE)

重新加载项目后,自定义类型将可从 CMake 设置中使用:

自定义构建类型

请注意,自定义类型已添加到缓存的 Debug 值中 CMakeCache.txt 。 因此,例如,如果您添加一个新的 CMake 配置文件,它将有自己的 CMakeCache.txt ,对于此配置文件,可用构建类型的列表将仅包含您的自定义类型:

为新的 cmake 配置文件自定义构建类型

构建选项

构建选项 字段中,您可以设置选项,这些选项将传递给 CMake 使用的构建工具或作为命令行参数传递给 CMake 本身。 这些选项将在 构建阶段使用。

底层构建工具(make、Ninja 或其他工具)的参数应以 -- 为前缀。 例如,如果您指定 -j 5 --clean-first -- -d -p ,则 -j 5 --clean-first 将由 CMake 处理,而 -d -p 将传递给构建工具。

当此字段中未指定任何内容时,CLion 使用取决于所选环境的默认设置。 例如,并行运行的构建进程的默认设置为 -- -j max(cpucount * 0.8, cpucount - 2) (适用于 makeNinja ),而对于 Microsoft Visual C++ ,此选项未设置且字段为空。

环境变量

您可以通过 环境 字段在 CMake 设置 对话框中传递其他环境变量(导航到 设置 | 构建、执行、部署 | CMake)。

CMake 生成和构建的 整体影响环境 包括:

  • 父环境

    要包含父环境,请通过点击 或按 Shift+Enter 打开 环境变量 对话框,并设置 包含系统环境变量 复选框。 您另外指定的值将附加到系统变量中。 否则,当复选框被清除时,您的自定义值将覆盖系统值。

  • 工具链环境

    这些是由所选工具集定义的变量(例如, vcvarsall.bat 对于 MSVC 或路径变量,如 mingw/bin ),或者来自 环境初始化脚本 的变量。

  • CMake 配置文件环境

    您在 环境 字段中指定的自定义变量。

您可以使用 $VAR$ 语法引用现有变量,包括父环境变量。 请注意,此类引用区分大小写:例如, PATH=xxx:$PATH$ 用于 Linux/macOS, Path=xxx;$Path$ 用于 Windows。 引用现有变量目前不适用于 远程工具链CPP-15693)。

最后修改日期: 2025年 9月 26日