CMake 配置文件
构建 CMake 项目所需的设置已集成到 CMake 配置文件 中。 它包括 toolchain和 构建 type ,以及 CMake 选项,例如 generators和 environment variables。
您可以为项目配置多个配置文件,例如使用不同的编译器或以不同的设置构建目标。
访问配置文件设置
执行以下操作之一以打开 CMake 配置文件设置。
转到 。
按 Ctrl+Shift+A 打开 查找操作 对话框并搜索 CMake 设置:

转到 并 为 CMake 设置分配快捷键。 使用此快捷键快速打开 CMake 设置页面。

添加新配置文件
转到 。
点击
,CLion 将在列表中添加一个新配置文件。
如有需要,请更改配置文件名称、构建类型和其他设置。
使用配置文件进行构建
启用的配置文件列在配置文件切换器中。
在构建、运行或调试应用程序之前选择所需的配置文件。

点击
或调用可用的 构建操作。
此外,默认情况下,在运行
或调试
之前会执行构建(您可以在配置设置中更改此项)。
为新项目配置默认配置文件
转到 。
配置默认用于所有 新项目的配置文件列表。
共享配置文件
您可以在 VCS 中与项目一起共享 CMake 配置文件。 配置文件的设置存储在 cmake.xml 中的 .idea 目录中。
选择您想要共享的配置文件并设置 共享 复选框:

共享的配置文件会自动移至列表底部。
请确保共享配置文件和本地配置文件的名称不同。 如果共享配置文件和本地配置文件具有相同的名称,本地配置文件将优先,您将在设置中看不到共享配置文件。
禁用/启用配置文件
您可以禁用当前未使用的配置文件,以节省加载时间并避免潜在错误(例如,当您有一个不经常使用的远程配置文件且机器已关闭时)。
使用以下选项之一:
在 中清除或设置 启用配置文件 复选框。 已禁用的配置文件在列表中显示为灰色。

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

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

CMake 选项
编译器标志
在 CLion 中,您可以在配置文件的 CMake 选项 字段或 CMakeLists.txt 脚本中指定编译器标志。
使用 CMake 选项:
在 中选择配置文件并编辑 CMake 选项 字段。
使用
-D和CMAKE_CXX_FLAGS变量(或CMAKE_C_FLAGS用于 C 项目)。 例如,-DCMAKE_CXX_FLAGS="-Wall -Wextra"。
CLion 还支持传递给 CMake 选项 的
--preset参数。 指定的 预设 的数据会加载到构建类型、工具链和构建目录设置中。或者,您可以在 CMakeLists.txt 中设置编译器标志。
添加以下命令并包含所需的标志:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
CMake 工具链文件
在 CMake 选项 中,您可以使用 CMAKE_TOOLCHAIN_FILE 变量指定 CMake 工具链文件。
CMake 缓存变量
您可以在 缓存变量 表中查看和编辑 CMake 缓存变量:

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

要从 CMake 选项 字段中移除变量,请在表中选择它并点击 或按 Alt+Delete。 变量将从表中移除,或者其值将在 重置 CMake 缓存 后设置为默认值。
要放弃当前会话中所做的更改,请选择一个变量并点击 或按 Ctrl+Z。
高级 CMake 变量默认是隐藏的,但您可以通过选择 显示高级选项 复选框来显示它们:

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

IDE 将布尔值显示为复选框。 在复选框旁边,您可以看到布尔变量背后的实际值。 以下值被视为 False: 0、 OFF、 NO、 N、 IGNORE、 NOTFOUND 、空字符串以及以后缀 -NOTFOUND 结尾的值。 在所有其他情况下,该值被视为 True。
当您在 CLion 用户界面中选中或取消选中复选框时,以下值对用于配置选项值: 0-1、 OFF-ON、 NO-YES、 FALSE-TRUE 和 N-Y。 对于任何其他值,IDE 会将复选框状态转换为 OFF-ON。
生成器
在 生成器 字段中,您可以在 CMake 生成器 之间切换。 使用所选工具链的默认值或从预定义列表中设置另一个生成器:

使用默认值 | CLion 使用 Ninja 或 Makefiles 作为默认生成器。 Ninja 在以下 所有条件为真时使用:
在所有其他情况下,将使用 Makefiles 生成器。 |
让 CMake 决定 | 如果您选择此选项,CLion 不会强制显式使用任何生成器,CMake 将决定使用哪个生成器。 默认情况下,这由 CMAKE_GENERATOR 环境变量控制。 |
或者,您可以通过 CMake 选项 和 -G 设置生成器。 当使用 生成器 字段时,CLion 会自动更新 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 变量。 例如:
您还可以在代码中基于当前构建类型创建条件语句:
自定义构建类型
可用构建类型的列表在 CMAKE_CONFIGURATION_TYPES 命令中定义。 此命令的默认值是上述四种构建类型,但您可以扩展它以包含其他构建类型。 例如:
重新加载项目后,自定义类型将可从 CMake 设置中使用:

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

构建选项
在 构建选项 字段中,您可以设置选项,这些选项将传递给 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) (适用于 make 和 Ninja ),而对于 Microsoft Visual C++ ,此选项未设置且字段为空。
环境变量
您可以通过 环境 字段在 对话框中传递其他环境变量(导航到 )。
CMake 生成和构建的 整体影响环境 包括:
父环境
要包含父环境,请通过点击
或按 Shift+Enter 打开 环境变量 对话框,并设置 包含系统环境变量 复选框。 您另外指定的值将附加到系统变量中。 否则,当复选框被清除时,您的自定义值将覆盖系统值。
工具链环境
这些是由所选工具集定义的变量(例如, vcvarsall.bat 对于 MSVC 或路径变量,如
mingw/bin),或者来自 环境初始化脚本 的变量。CMake 配置文件环境
您在 环境 字段中指定的自定义变量。
您可以使用 $VAR$ 语法引用现有变量,包括父环境变量。 请注意,此类引用区分大小写:例如, PATH=xxx:$PATH$ 用于 Linux/macOS, Path=xxx;$Path$ 用于 Windows。 引用现有变量目前不适用于 远程工具链 (CPP-15693)。