cmake(1)

概要

Generate a Project Buildsystem
 cmake [<options>] -B <path-to-build> [-S <path-to-source>]
 cmake [<options>] <path-to-source | path-to-existing-build>

Build a Project
 cmake --build <dir> [<options>] [-- <build-tool-options>]

Install a Project
 cmake --install <dir> [<options>]

Open a Project
 cmake --open <dir>

Run a Script
 cmake [-D <var>=<value>]... -P <cmake-script-file>

Run a Command-Line Tool
 cmake -E <command> [<options>]

Run the Find-Package Tool
 cmake --find-package [<options>]

Run a Workflow Preset
 cmake --workflow <options>

View Help
 cmake --help[-<topic>]

描述

cmake 可执行程序是跨平台构建系统生成器 CMake 的命令行接口。上面的 概要 列出了该工具可以执行的各种操作,具体将在下文的各个章节中进行描述。

要使用 CMake 构建软件项目,请 生成项目构建系统。可选地,您可以使用 cmake 构建项目安装项目,或者直接运行相应的构建工具(例如 make)。cmake 还可以用于 查看帮助

其他操作旨在供使用 CMake 语言 编写脚本以支持其构建的软件开发者使用。

有关可用于替代 cmake 的图形用户界面,请参阅 ccmakecmake-gui。有关 CMake 测试和打包工具的命令行接口,请参阅 ctestcpack

有关 CMake 整体的更多信息,请 参见 本手册末尾的链接。

CMake 构建系统简介

构建系统 描述了如何使用构建工具自动地从项目的源代码构建项目的可执行文件和库。例如,构建系统可以是用于命令行 make 工具的 Makefile,或者是集成开发环境 (IDE) 的项目文件。为了避免维护多个此类构建系统,项目可以使用用 CMake 语言 编写的文件来抽象地指定其构建系统。通过这些文件,CMake 通过一个称为生成器的后端为每个用户本地生成首选的构建系统。

要使用 CMake 生成构建系统,必须选择以下内容

源代码树

包含项目提供的源文件的顶层目录。项目使用 cmake-language(7) 手册中描述的文件来指定其构建系统,从名为 CMakeLists.txt 的顶层文件开始。这些文件指定了构建目标及其依赖项,如 cmake-buildsystem(7) 手册中所述。

构建树

用于存储构建系统文件和构建输出产物(例如可执行文件和库)的顶层目录。CMake 会将 CMakeCache.txt 文件写入此目录,以标识该目录为构建树,并存储持久信息,例如构建系统配置选项。

为了保持源代码树的整洁,请执行外部构建,即使用一个独立的专用构建树。也支持内部构建(将构建树放置在与源代码树相同的目录中),但此做法不被推荐。

生成器

这会选择要生成的构建系统的类型。有关所有生成器的文档,请参阅 cmake-generators(7) 手册。运行 cmake --help 以查看本地可用的生成器列表。可选地,使用下面的 -G 选项来指定生成器,或者仅接受 CMake 为当前平台选择的默认值。

在使用命令行构建工具生成器之一时,CMake 期望编译器工具链所需的编译环境已在 shell 中配置好。在使用IDE 构建工具生成器之一时,则不需要特定的编译环境。

生成项目构建系统

使用以下命令签名之一运行 CMake 来指定源目录和构建目录并生成构建系统

cmake [<options>] -B <path-to-build> [-S <path-to-source>]

3.13 版本新增。

<path-to-build> 用作构建树,将 <path-to-source> 用作源目录。指定的路径可以是绝对路径,也可以是相对于当前工作目录的相对路径。源目录必须包含 CMakeLists.txt 文件。如果构建目录不存在,则会自动创建。例如:

$ cmake -S src -B build
cmake [<options>] <path-to-source>

将当前工作目录用作构建树,将 <path-to-source> 用作源目录。指定的路径可以是绝对路径,也可以是相对于当前工作目录的相对路径。源目录必须包含 CMakeLists.txt 文件,并且不得包含 CMakeCache.txt 文件,因为后者标识了现有的构建树。例如:

$ mkdir build ; cd build
$ cmake ../src
cmake [<options>] <path-to-existing-build>

<path-to-existing-build> 用作构建树,并从其 CMakeCache.txt 文件加载源目录的路径。该文件必须已通过先前运行 CMake 的操作生成。指定的路径可以是绝对路径,也可以是相对于当前工作目录的相对路径。例如:

$ cd build
$ cmake .

在所有情况下,<options> 可以是零个或多个下面的 选项

上述指定源目录和构建目录的样式可以混合使用。使用 -S-B 指定的路径总是分别被归类为源目录或构建目录。使用普通参数指定的路径会根据其内容和前面提供的路径类型进行分类。如果只提供一种类型的路径,则另一类型将使用当前工作目录 (cwd)。例如:

命令行

源目录

构建目录

cmake -B build

cwd

构建

cmake -B build src

src

构建

cmake -B build -S src

src

构建

cmake src

src

cwd

cmake build (现有)

加载

构建

cmake -S src

src

cwd

cmake -S src build

src

构建

cmake -S src -B build

src

构建

已更改于 3.23 版本: CMake 在指定多个源目录时会发出警告。这从未被官方记录或支持过,但旧版本意外地接受了多个源目录并使用了最后指定的路径。避免传递多个源路径参数。

生成构建系统后,您可以使用相应的本地构建工具来构建项目。例如,在使用 Unix Makefiles 生成器后,您可以直接运行 make

$ make
$ make install

或者,您也可以使用 cmake 构建项目,通过自动选择并调用相应的本地构建工具。

选项

-S <path-to-source>

要构建的 CMake 项目的根目录路径。

-B <path-to-build>

CMake 将用作构建目录根目录的目录路径。

如果该目录不存在,CMake 将创建它。

-C <initial-cache>

预加载一个脚本来填充缓存。

当 CMake 在一个空的构建目录中首次运行时,它会创建一个 CMakeCache.txt 文件,并用项目可自定义的设置来填充它。此选项可用于指定一个文件,从中在首次遍历项目 CMake 列表文件之前加载缓存条目。加载的条目具有比项目的默认值更高的优先级。给定的文件应是一个 CMake 脚本,其中包含使用 CACHE 选项的 set() 命令,而不是一个缓存格式文件。

脚本中对 CMAKE_SOURCE_DIRCMAKE_BINARY_DIR 的引用将求值为顶层源目录和构建目录。

-D <var>:<type>=<value>, -D <var>=<value>

创建或更新 CMake CACHE 条目。

当 CMake 在一个空的构建目录中首次运行时,它会创建一个 CMakeCache.txt 文件,并用项目可自定义的设置来填充它。此选项可用于指定一个比项目默认值具有更高优先级的设置。该选项可以重复使用,以指定任意数量的 CACHE 条目。

如果给出了 :<type> 部分,它必须是 set() 命令文档中为其 CACHE 签名指定的类型之一。如果省略了 :<type> 部分,则如果条目不存在且没有类型,则会以无类型的方式创建该条目。如果项目中的某个命令将类型设置为 PATHFILEPATH,则 <value> 将被转换为绝对路径。

此选项也可以作为单个参数给出:-D<var>:<type>=<value>-D<var>=<value>

需要注意的是,-C-D 参数的顺序很重要。它们将按列出的顺序执行,最后一个参数优先于前面的参数。例如,如果您指定 -DCMAKE_BUILD_TYPE=Debug,然后是调用

set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)

-C 参数,则 -C 参数将优先,并且 CMAKE_BUILD_TYPE 将设置为 Release。但是,如果 -D 参数在 -C 参数之后,它将设置为 Debug

如果 -C 文件中的 set(... CACHE ...) 调用不使用 FORCE,并且 -D 参数设置了相同的变量,则由于非 FORCE set(... CACHE ...) 调用的性质,-D 参数将优先,无论其顺序如何。

-U <globbing_expr>

从 CMake CACHE 中删除匹配的条目。

此选项可用于从 CMakeCache.txt 文件中删除一个或多个变量,支持使用 *? 的通配符表达式。该选项可以重复使用,以指定任意数量的 CACHE 条目。

谨慎使用,您可能会使您的 CMakeCache.txt 文件无法工作。

-G <generator-name>

指定构建系统生成器。

CMake 在某些平台上可能支持多个本地构建系统。生成器负责生成特定的构建系统。可能的生成器名称在 cmake-generators(7) 手册中指定。

如果未指定,CMake 会检查 CMAKE_GENERATOR 环境变量,否则会回退到内置的默认选择。

-T <toolset-spec>

生成器的工具集规范(如果支持)。

某些 CMake 生成器支持工具集规范,用于告知原生构建系统如何选择编译器。有关详细信息,请参阅 CMAKE_GENERATOR_TOOLSET 变量。

-A <platform-name>

如果生成器支持,则指定平台名称。

某些 CMake 生成器支持为原生构建系统指定平台名称,以选择编译器或 SDK。有关详细信息,请参阅 CMAKE_GENERATOR_PLATFORM 变量。

--toolchain <path-to-file>

3.21 版本新增。

指定交叉编译工具链文件,等同于设置 CMAKE_TOOLCHAIN_FILE 变量。相对路径将解释为相对于构建目录,如果未找到,则解释为相对于源目录。

--install-prefix <directory>

3.21 版本新增。

指定安装目录,由 CMAKE_INSTALL_PREFIX 变量使用。必须是绝对路径。

--project-file <project-file-name>

4.0 版本新增。

指定备用项目文件名。

这决定了 CMake 在配置项目时处理的顶层文件,以及 add_subdirectory() 处理的文件。

默认情况下,这是 CMakeLists.txt。如果设置为其他任何值,则在项目子目录中找不到指定文件时,CMakeLists.txt 将作为回退使用。

注意

此功能旨在供开发人员在增量迁移期间临时使用,不适用于最终产品的发布。当项目文件不是 CMakeLists.txt 时,CMake 始终会发出警告。

-Wno-dev

抑制开发者警告。

抑制面向 CMakeLists.txt 文件作者的警告。默认情况下,这将也关闭弃用警告。

-Wdev

启用开发者警告。

启用面向 CMakeLists.txt 文件作者的警告。默认情况下,这将也启用弃用警告。

-Wdeprecated

启用已弃用功能的警告。

启用面向 CMakeLists.txt 文件作者的已弃用功能警告。

-Wno-deprecated

抑制已弃用功能的警告。

抑制面向 CMakeLists.txt 文件作者的已弃用功能警告。

-Werror=<what>

将 CMake 警告视为错误。<what> 必须是以下之一:

开发

将开发者警告视为错误。

将面向 CMakeLists.txt 文件作者的警告视为错误。默认情况下,这将也把弃用警告作为错误处理。

已弃用

将已弃用宏和函数警告视为错误。

将面向 CMakeLists.txt 文件作者的已弃用宏和函数警告视为错误。

-Wno-error=<what>

不要将 CMake 警告视为错误。<what> 必须是以下之一:

开发

将面向 CMakeLists.txt 文件作者的警告不视为错误。默认情况下,这将也关闭将弃用警告作为错误处理。

已弃用

将面向 CMakeLists.txt 文件作者的已弃用宏和函数警告不视为错误。

--fresh

在 3.24 版本中添加。

执行构建树的全新配置。这将删除任何现有的 CMakeCache.txt 文件和相关的 CMakeFiles/ 目录,并从头开始重新创建它们。

已更改于 3.30 版本: 对于先前由 FetchContent 使用策略 CMP0168NEW 设置填充的依赖项,将从任何先前的运行中删除它们的 stamp 和脚本文件。因此,下载、更新和修补步骤将被强制重新执行。

-L[A][H]

列出非高级的缓存变量。

列出 CACHE 变量将运行 CMake 并列出 CMake CACHE 中所有未标记为 INTERNALADVANCED 的变量。这将有效地显示当前的 CMake 设置,之后可以使用 -D 选项进行更改。更改某些变量可能会导致创建更多变量。如果指定了 A,则还将显示高级变量。如果指定了 H,还将显示每个变量的帮助。

-LR[A][H] <regex>

在版本 3.31 中添加。

显示特定的非高级缓存变量

从 CMake CACHE 中显示与给定正则表达式匹配的非 INTERNALADVANCED 变量。如果指定了 A,则还将显示高级变量。如果指定了 H,还将显示每个变量的帮助。

-N

仅视图模式。

仅加载缓存。不实际运行配置和生成步骤。

--graphviz=<file>

生成依赖项的 Graphviz 图。

此选项生成一个 graphviz 输入文件,其中包含项目中所有库和可执行文件的依赖项,显示项目内目标之间的依赖关系,以及与之链接的外部库。

当使用 --graphviz=foo.dot 选项运行 CMake 时,它会生成:

  • 一个 foo.dot 文件,显示项目中的所有依赖项

  • 每个目标一个 foo.dot.<target> 文件,显示它依赖于哪些其他目标

  • 每个目标一个 foo.dot.<target>.dependers 文件,显示哪些其他目标依赖于它

这些 .dot 文件可以使用 Graphviz 软件包中的 dot 命令转换为图像。

dot -Tpng -o foo.png foo.dot

已添加于 3.10 版本: 不同的依赖项类型 PUBLICINTERFACEPRIVATE 分别用实线、虚线和点线表示。

Graphviz 支持的特定变量

生成的图形可能非常庞大。可以使用 CMakeGraphVizOptions.cmake 文件控制生成图形的外观和内容。该文件首先在 CMAKE_BINARY_DIR 中搜索,然后在 CMAKE_SOURCE_DIR 中搜索。如果找到,其中设置的变量将用于调整生成 Graphviz 文件的选项。

GRAPHVIZ_GRAPH_NAME

图形名称。

GRAPHVIZ_GRAPH_HEADER

写入 Graphviz 文件顶部的标头。

  • 必需:否

  • 默认值:"node [ fontsize = "12" ];"

GRAPHVIZ_NODE_PREFIX

Graphviz 文件中每个节点的名称前缀。

  • 必需:否

  • 默认值:"node"

GRAPHVIZ_EXECUTABLES

设置为 FALSE 以从生成的图中排除可执行文件。

  • 必需:否

  • 默认值:TRUE

GRAPHVIZ_STATIC_LIBS

设置为 FALSE 以从生成的图中排除静态库。

  • 必需:否

  • 默认值:TRUE

GRAPHVIZ_SHARED_LIBS

设置为 FALSE 以从生成的图中排除共享库。

  • 必需:否

  • 默认值:TRUE

GRAPHVIZ_MODULE_LIBS

设置为 FALSE 以从生成的图中排除模块库。

  • 必需:否

  • 默认值:TRUE

GRAPHVIZ_INTERFACE_LIBS

设置为 FALSE 以从生成的图中排除接口库。

  • 必需:否

  • 默认值:TRUE

GRAPHVIZ_OBJECT_LIBS

设置为 FALSE 以从生成的图中排除对象库。

  • 必需:否

  • 默认值:TRUE

GRAPHVIZ_UNKNOWN_LIBS

设置为 FALSE 以从生成的图中排除未知库。

  • 必需:否

  • 默认值:TRUE

GRAPHVIZ_EXTERNAL_LIBS

设置为 FALSE 以从生成的图中排除外部库。

  • 必需:否

  • 默认值:TRUE

GRAPHVIZ_CUSTOM_TARGETS

设置为 TRUE 以在生成的图中包含自定义目标。

  • 必需:否

  • 默认值:FALSE

GRAPHVIZ_IGNORE_TARGETS

用于排除生成图形中目标的名称的正则表达式列表。

  • 必需:否

  • 默认值:空

GRAPHVIZ_GENERATE_PER_TARGET

设置为 FALSE 以不生成每个目标的图形 foo.dot.<target>

  • 必需:否

  • 默认值:TRUE

GRAPHVIZ_GENERATE_DEPENDERS

设置为 FALSE 以不生成依赖者图形 foo.dot.<target>.dependers

  • 必需:否

  • 默认值:TRUE

--system-information [file]

转储有关此系统的信息。

转储关于当前系统的广泛信息。如果从 CMake 项目的二进制树的根目录运行,它还将转储其他信息,例如缓存、日志文件等。

--print-config-dir

在版本 3.31 中添加。

打印 CMake 配置目录,用于用户范围的文件 API 查询。

有关更多详细信息,请参阅 CMAKE_CONFIG_DIR

--log-level=<level>

3.16 版新增。

设置日志 <level>

message() 命令将仅输出指定日志级别或更高级别的消息。有效的日志级别为 ERRORWARNINGNOTICESTATUS(默认)、VERBOSEDEBUGTRACE

要使日志级别在 CMake 运行之间持久化,请将 CMAKE_MESSAGE_LOG_LEVEL 设置为缓存变量。如果同时提供了命令行选项和变量,则命令行选项具有优先权。

出于向后兼容的原因,--loglevel 也被接受作为此选项的同义词。

已添加于 3.25 版本: 请参阅 cmake_language() 命令,了解查询当前消息日志级别 的方法。

--log-context

启用 message() 命令输出与每条消息关联的上下文。

此选项仅在当前 CMake 运行期间开启上下文显示。要使上下文显示在所有后续 CMake 运行中持久化,请将 CMAKE_MESSAGE_CONTEXT_SHOW 设置为缓存变量。当提供此命令行选项时,将忽略 CMAKE_MESSAGE_CONTEXT_SHOW

--sarif-output=<path>

4.0 版本新增。

启用以 SARIF 格式记录 CMake 生成的诊断消息。

将诊断消息写入指定路径的 SARIF 文件。项目也可以将 CMAKE_EXPORT_SARIF 设置为 ON 以在构建树中启用此功能。

--debug-trycompile

不要删除为 try_compile() / try_run() 调用创建的文件和目录。这对于调试失败的检查很有用。

注意,try_compile() 的某些用法可能会使用相同的构建树,这会限制此选项的有用性,如果项目执行了多个 try_compile()。例如,此类用法可能会改变结果,因为先前 try-compile 的产物可能导致另一个测试通过或失败不正确。此选项最好仅用于调试。

(关于前面的内容,try_run() 命令有效地等同于 try_compile()。两者的任何组合都可能受到上述潜在问题的影响。)

已添加于 3.25 版本: 启用此选项时,每个 try-compile 检查都会打印一条日志消息,报告检查执行的目录。

--debug-output

将 cmake 置于调试模式。

在 cmake 运行时打印额外信息,例如使用 message(SEND_ERROR) 调用的堆栈跟踪。

--debug-find

在 3.17 版本中添加。

将 cmake 的查找命令置于调试模式。

在 cmake 运行时向标准错误打印额外的查找调用信息。输出旨在供人类阅读,而不是用于解析。另请参阅 CMAKE_FIND_DEBUG_MODE 变量,用于调试项目的更局部部分。

--debug-find-pkg=<pkg>[,...]

在版本 3.23 中添加。

在调用 find_package(<pkg>) 时,将 cmake 的查找命令置于调试模式,其中 <pkg> 是给定的大小写敏感包名称的逗号分隔列表中的一个条目。

--debug-find 类似,但范围限制为指定的包。

--debug-find-var=<var>[,...]

在版本 3.23 中添加。

在调用 cmake 的查找命令并将 <var> 作为结果变量时,将其置于调试模式,其中 <var> 是给定逗号分隔列表中的一个条目。

--debug-find 类似,但范围限制为指定的变量名。

--trace

将 cmake 置于跟踪模式。

打印所有调用及其来源的跟踪信息。

--trace-expand

将 cmake 置于跟踪模式。

--trace 类似,但变量已展开。

--trace-format=<format>

在 3.17 版本中添加。

将 cmake 置于跟踪模式并设置跟踪输出格式。

<format> 可以是以下值之一:

人工

以人类可读的格式打印每行跟踪信息。这是默认格式。

json-v1

将每行打印为单独的 JSON 文档。每个文档由换行符 (\n) 分隔。保证 JSON 文档内部不会包含换行符。

JSON 跟踪格式
{
  "file": "/full/path/to/the/CMake/file.txt",
  "line": 0,
  "cmd": "add_executable",
  "args": ["foo", "bar"],
  "time": 1579512535.9687231,
  "frame": 2,
  "global_frame": 4
}

成员是

file

调用该函数的 CMake 源文件的完整路径。

file 中函数调用开始的行号。

line_end

如果函数调用跨越多行,则此字段将设置为函数调用结束的行号。如果函数调用只占一行,则此字段未设置。此字段已在 json-v1 格式的次版本 2 中添加。

defer

当函数调用被 cmake_language(DEFER) 延迟时存在的可选成员。如果存在,其值为一个字符串,包含延迟调用的 <id>

cmd

调用的函数名称。

args

所有函数参数的字符串列表。

time

函数调用的时间戳(自纪元以来的秒数)。

frame

被调用函数的堆栈帧深度,在当前正在处理的 CMakeLists.txt 的上下文中。

global_frame

被调用函数的堆栈帧深度,跨所有涉及跟踪的 CMakeLists.txt 文件进行跟踪。此字段已在 json-v1 格式的次版本 2 中添加。

此外,输出的第一个 JSON 文档包含当前主要和次要版本的 version 键。

JSON 版本格式
{
  "version": {
    "major": 1,
    "minor": 2
  }
}

成员是

版本

指示 JSON 格式的版本。版本具有遵循语义版本约定的主版本号和次版本号。

--trace-source=<file>

将 cmake 置于跟踪模式,但仅输出指定文件的行。

允许多个选项。

--trace-redirect=<file>

将 cmake 置于跟踪模式并将跟踪输出重定向到文件而不是 stderr。

--warn-uninitialized

警告未初始化值。

当使用未初始化的变量时打印警告。

--warn-unused-vars

无操作。在 CMake 版本 3.2 及更低版本中,此选项启用了关于未使用的变量的警告。在 CMake 版本 3.3 至 3.18 中,该选项已损坏。在 CMake 3.19 及更高版本中,该选项已被移除。

--no-warn-unused-cli

不要警告命令行选项。

不要查找在命令行上声明但未使用的变量。

--check-system-vars

查找系统文件中变量使用的问题。

通常,仅在 CMAKE_SOURCE_DIRCMAKE_BINARY_DIR 中搜索未使用的和未初始化的变量。此标志指示 CMake 也要警告其他文件。

--compile-no-warning-as-error

在 3.24 版本中添加。

忽略目标属性 COMPILE_WARNING_AS_ERROR 和变量 CMAKE_COMPILE_WARNING_AS_ERROR,阻止在编译时将警告视为错误。

4.0 版本新增。

忽略目标属性 LINK_WARNING_AS_ERROR 和变量 CMAKE_LINK_WARNING_AS_ERROR,阻止在链接时将警告视为错误。

--profiling-output=<path>

在 3.18 版本中新增。

--profiling-format 结合使用,将输出到给定路径。

--profiling-format=<file>

启用以给定格式输出 CMake 脚本的性能分析数据。

这有助于对执行的 CMake 脚本进行性能分析。应使用第三方应用程序将输出处理为人类可读的格式。

当前支持的值为:google-trace 以 Google Trace Format 输出,可以被 Google Chrome 的 about:tracing 标签或 Trace Compass 等工具的插件解析。

--preset <preset>, --preset=<preset>

CMakePresets.jsonCMakeUserPresets.json 文件中读取一个 preset,这些文件必须位于与顶层 CMakeLists.txt 文件相同的目录中。该预设可以指定生成器、构建目录、变量列表以及传递给 CMake 的其他参数。至少必须存在 CMakePresets.jsonCMakeUserPresets.json 中的一个。CMake GUI 也识别并支持 CMakePresets.jsonCMakeUserPresets.json 文件。有关这些文件的完整详细信息,请参阅 cmake-presets(7)

预设在所有其他命令行选项之前读取,尽管 -S 选项可用于指定包含 CMakePresets.jsonCMakeUserPresets.json 文件的源目录。如果未给出 -S,则假定当前目录为顶层源目录,并且必须包含预设文件。所选预设指定的选项(变量、生成器等)都可以通过在命令行上手动指定来覆盖。例如,如果预设将变量 MYVAR 设置为 1,但用户使用 -D 参数将其设置为 2,则值 2 优先。

--list-presets[=<type>]

列出指定 <type> 的可用预设。<type> 的有效值为 configurebuildtestpackageall。如果省略 <type>,则假定为 configure。除非使用 -S 选项指定不同的顶层源目录,否则当前工作目录必须包含 CMake 预设文件。

--debugger

启用 CMake 语言的交互式调试。CMake 在由 --debugger-pipe 指定的管道上公开调试接口,该接口符合 Debug Adapter Protocol 规范,并进行了以下修改。

initialize 响应包含一个名为 cmakeVersion 的附加字段,该字段指定正在调试的 CMake 的版本。

调试器初始化响应
{
  "cmakeVersion": {
    "major": 3,
    "minor": 27,
    "patch": 0,
    "full": "3.27.0"
  }
}

成员是

主要版本

一个整数,指定主版本号。

次要版本

一个整数,指定次版本号。

patch

一个整数,指定补丁版本号。

full

一个字符串,指定完整的 CMake 版本。

--debugger-pipe <pipe name>, --debugger-pipe=<pipe name>

用于调试器通信的管道(在 Windows 上)或域套接字(在 Unix 上)的名称。

--debugger-dap-log <log path>, --debugger-dap-log=<log path>

将所有调试器通信记录到指定文件中。

构建项目

CMake 提供了一个命令行签名来构建已生成的项目二进制树。

cmake --build <dir>             [<options>] [-- <build-tool-options>]
cmake --build --preset <preset> [<options>] [-- <build-tool-options>]

这抽象了原生构建工具的命令行接口,具有以下选项:

--build <dir>

要构建的项目二进制目录。这是必需的(除非指定了预设),并且必须放在第一个。

--preset <preset>, --preset=<preset>

使用构建预设指定构建选项。项目二进制目录是从 configurePreset 键推断出来的。当前工作目录必须包含 CMake 预设文件。有关更多详细信息,请参阅 preset

--list-presets

列出可用的构建预设。当前工作目录必须包含 CMake 预设文件。

-j [<jobs>], --parallel [<jobs>]

3.12 版本新增。

构建时使用的并发进程的最大数量。如果省略 <jobs>,则使用原生构建工具的默认数量。

如果设置了 CMAKE_BUILD_PARALLEL_LEVEL 环境变量,则指定默认的并行级别,当未给出此选项时。

某些原生构建工具始终并行构建。使用 <jobs> 值为 1 可以限制为单个作业。

-t <tgt>..., --target <tgt>...

构建 <tgt> 而不是默认目标。可以提供多个目标,用空格分隔。

--config <cfg>

对于多配置工具,选择配置 <cfg>

--clean-first

首先构建目标 clean,然后构建。 (要仅清理,请使用 --target clean。)

--resolve-package-references=<value>

在版本 3.23 中添加。

在构建之前解析来自外部包管理器(例如 NuGet)的远程包引用。当 <value> 设置为 on(默认)时,将在构建目标之前还原包。当 <value> 设置为 only 时,将还原包,但不会执行构建。当 <value> 设置为 off 时,将不还原任何包。

如果目标未定义任何包引用,则此选项无效。

可以在构建预设中指定此设置(使用 resolvePackageReferences)。如果提供了此命令行选项,则会忽略预设设置。

如果未提供命令行参数或预设选项,将评估特定于环境的缓存变量来决定是否应执行包还原。

使用 Visual Studio 生成器 时,包引用使用 VS_PACKAGE_REFERENCES 属性定义。使用 NuGet 还原包引用。可以通过将 CMAKE_VS_NUGET_PACKAGE_RESTORE 变量设置为 OFF 来禁用它。

--use-stderr

已忽略。在 CMake >= 3.0 中是默认行为。

-v, --verbose

启用详细输出 - 如果支持 - 包括要执行的构建命令。

如果设置了 VERBOSE 环境变量或 CMAKE_VERBOSE_MAKEFILE 缓存变量,则可以省略此选项。

--

将剩余选项传递给原生工具。

运行 cmake --build 时不带选项以获取快速帮助。

生成器特定的构建工具行为

cmake --build 对某些生成器有特殊行为:

Xcode

已添加于 4.1 版本: 如果第三方工具已在 CMake 生成的 .xcodeproj 旁边编写了 .xcworkspace,则 cmake --build 将通过工作空间驱动构建。

安装项目

CMake 提供了一个命令行签名来安装已生成的项目二进制树。

cmake --install <dir> [<options>]

可以在构建项目后使用此命令,而无需使用生成的构建系统或原生构建工具来执行安装。选项是:

--install <dir>

要安装的项目二进制目录。这是必需的,并且必须放在第一个。

--config <cfg>

对于多配置生成器,请选择配置 <cfg>

--component <comp>

基于组件的安装。仅安装组件 <comp>

--default-directory-permissions <permissions>

默认目录安装权限。权限格式为 <u=rwx,g=rx,o=rx>

--prefix <prefix>

覆盖安装前缀 CMAKE_INSTALL_PREFIX

--strip

安装前进行剥离。

-v, --verbose

启用详细输出。

如果设置了 VERBOSE 环境变量,则可以省略此选项。

-j <jobs>, --parallel <jobs>

在版本 3.31 中添加。

使用给定的作业数并行安装。仅当启用 INSTALL_PARALLEL 时可用。当未提供此选项时,CMAKE_INSTALL_PARALLEL_LEVEL 环境变量指定默认的并行级别。

运行 cmake --install 命令(不带选项),以获取快速帮助。

打开项目

cmake --open <dir>

在关联的应用程序中打开生成的项目。这仅受某些生成器支持。

运行脚本

cmake [-D <var>=<value>]... -P <cmake-script-file> [-- <unparsed-options>...]
-D <var>=<value>

为脚本模式定义一个变量。

-P <cmake-script-file>

将给定的 CMake 文件作为 CMake 语言编写的脚本进行处理。不执行配置或生成步骤,并且不修改缓存。如果使用 -D 定义变量,则必须在 -P 参数之前进行。

-- 之后的任何选项都不会被 CMake 解析,但它们仍然包含在传递给脚本的 CMAKE_ARGV<n> 变量集中(包括 -- 本身)。

运行命令行工具

CMake 通过以下签名提供内置的命令行工具:

cmake -E <command> [<options>]
-E [help]

运行 cmake -Ecmake -E help 以获取命令摘要。

可用命令是:

capabilities

3.7 版本中新增。

以 JSON 格式报告 CMake 功能。输出是一个 JSON 对象,包含以下键:

版本

一个包含版本信息的 JSON 对象。键是:

string

CMake --version 显示的完整版本字符串。

主要版本

整数形式的主版本号。

次要版本

整数形式的次版本号。

patch

整数形式的补丁级别。

suffix

CMake 版本后缀字符串。

isDirty

一个布尔值,如果 CMake 构建来自脏树,则设置为 true。

生成器

一个可用的生成器列表。每个生成器都是一个 JSON 对象,包含以下键:

名称

包含生成器名称的字符串。

toolsetSupport

如果生成器支持工具集,则为 true,否则为 false

platformSupport

如果生成器支持平台,则为 true,否则为 false

supportedPlatforms

3.21 版本新增。

当生成器通过 CMAKE_GENERATOR_PLATFORM-A ...)支持平台规范时,可能存在的可选成员。该值是已知支持的平台列表。

extraGenerators

一个字符串列表,包含与生成器兼容的所有 附加生成器

fileApi

cmake-file-api(7) 可用时存在的可选成员。该值是一个 JSON 对象,包含一个成员:

requests

一个 JSON 数组,包含零个或多个支持的文件 API 请求。每个请求都是一个 JSON 对象,包含成员:

种类

指定支持的 对象种类 之一。

版本

一个 JSON 数组,其元素都是 JSON 对象,包含指定非负整数版本组件的 majorminor 成员。

serverMode

如果 CMake 支持服务器模式,则为 true,否则为 false。自 CMake 3.20 起始终为 false。

tls

在 3.25 版本中新增。

如果启用了 TLS 支持,则为 true,否则为 false

debugger

在 3.27 版本中新增。

如果支持 --debugger 模式,则为 true,否则为 false

cat [--] <files>...

在 3.18 版本中新增。

连接文件并将内容打印到标准输出。

--

在 3.24 版本中添加。

添加了对双破折号参数 -- 的支持。此 cat 的基本实现不支持任何选项,因此使用以 - 开头的选项将导致错误。如果文件名以 - 开头,请使用 -- 来指示选项的结束。

版本 3.29 中添加: cat 现在可以通过传递 - 参数来打印标准输入。

chdir <dir> <cmd> [<arg>...]

更改当前工作目录并运行命令。

compare_files [--ignore-eol] <file1> <file2>

检查 <file1> 是否与 <file2> 相同。如果文件相同,则返回 0;如果不同,则返回 1。如果参数无效,则返回 2。

--ignore-eol

3.14 版新增。

该选项表示逐行比较,并忽略 LF/CRLF 差异。

copy <file>... <destination>, copy -t <destination> <file>...

将文件复制到 <destination>(文件或目录)。如果指定了多个文件,或者指定了 -t,则 <destination> 必须是目录且必须存在。如果未指定 -t,则最后一个参数被假定为 <destination>。不支持通配符。 copy 会跟随符号链接。这意味着它不会复制符号链接本身,而是复制它指向的文件或目录。

版本 3.5 中添加: 支持多个输入文件。

版本 3.26 中添加: 支持 -t 参数。

copy_directory <dir>... <destination>

<dir>... 目录的内容复制到 <destination> 目录。如果 <destination> 目录不存在,则会创建它。 copy_directory 会跟随符号链接。

版本 3.5 中添加: 支持多个输入目录。

版本 3.15 中添加: 当源目录不存在时,命令现在会失败。以前,它会通过创建空的目标目录来成功。

copy_directory_if_different <dir>... <destination>

3.26 版新增。

<dir>... 目录中与目标内容不同的内容复制到 <destination> 目录。如果 <destination> 目录不存在,则会创建它。

copy_directory_if_different 会跟随符号链接。当源目录不存在时,命令会失败。

copy_directory_if_newer <dir>... <destination>

版本 4.2 中添加。

如果源文件比目标文件新(基于文件时间戳),则将 <dir>... 目录的内容复制到 <destination> 目录。如果 <destination> 目录不存在,则会创建它。

copy_directory_if_newer 会跟随符号链接。当源目录不存在时,命令会失败。这比 copy_directory_if_different 快,因为它只比较文件时间戳而不是文件内容。

copy_if_different <file>... <destination>

如果文件已更改,则将文件复制到 <destination>(文件或目录)。如果指定了多个文件,则 <destination> 必须是目录且必须存在。 copy_if_different 会跟随符号链接。

版本 3.5 中添加: 支持多个输入文件。

copy_if_newer <file>... <destination>

版本 4.2 中添加。

如果源文件比目标文件新(基于文件时间戳),则将文件复制到 <destination>(文件或目录)。如果指定了多个文件,则 <destination> 必须是目录且必须存在。 copy_if_newer 会跟随符号链接。这比 copy_if_different 快,因为它只比较文件时间戳而不是文件内容。

创建名为 <old> 的符号链接 <new>

版本 3.13 中添加: 支持在 Windows 上创建符号链接。

注意

创建 <new> 符号链接的路径必须提前存在。

3.19 版本新增。

创建名为 <old> 的硬链接 <new>

注意

创建 <new> 硬链接的路径必须提前存在。 <old> 必须提前存在。

echo [<string>...]

将参数显示为文本。

echo_append [<string>...]

将参数显示为文本,但不在末尾添加换行符。

env [<options>] [--] <command> [<arg>...]

版本 3.1 中新增。

在修改后的环境中运行命令。选项是:

NAME=VALUE

NAME 的当前值替换为 VALUE

--unset=NAME

取消设置 NAME 的当前值。

--modify ENVIRONMENT_MODIFICATION

在 3.25 版本中新增。

将单个 ENVIRONMENT_MODIFICATION 操作应用于修改后的环境。

NAME=VALUE 和 `--unset=NAME` 选项分别等同于 `--modify NAME=set:VALUE` 和 `--modify NAME=unset:`。请注意,`--modify NAME=reset:` 会将 `NAME` 重置为 cmake 启动时(或未设置时)的值,而不是最近的 `NAME=VALUE` 选项。

--

在 3.24 版本中添加。

添加了对双破折号参数 -- 的支持。使用 -- 来停止解释选项/环境变量,并将下一个参数视为命令,即使它以 - 开头或包含 =

environment

显示当前环境变量。

false

3.16 版新增。

什么也不做,退出码为 1。

make_directory <dir>...

创建 <dir> 目录。如果需要,也会创建父目录。如果目录已存在,则会被静默忽略。

版本 3.5 中添加: 支持多个输入目录。

md5sum <file>...

md5sum 兼容的格式创建文件的 MD5 校验和。

351abe79cd3800b38cdfb25d45015a15  file1.txt
052f86c15bbde68af55c7f7b340ab639  file2.txt
sha1sum <file>...

3.10 版本新增。

sha1sum 兼容的格式创建文件的 SHA1 校验和。

4bb7932a29e6f73c97bb9272f2bdc393122f86e0  file1.txt
1df4c8f318665f9a5f2ed38f55adadb7ef9f559c  file2.txt
sha224sum <file>...

3.10 版本新增。

sha224sum 兼容的格式创建文件的 SHA224 校验和。

b9b9346bc8437bbda630b0b7ddfc5ea9ca157546dbbf4c613192f930  file1.txt
6dfbe55f4d2edc5fe5c9197bca51ceaaf824e48eba0cc453088aee24  file2.txt
sha256sum <file>...

3.10 版本新增。

sha256sum 兼容的格式创建文件的 SHA256 校验和。

76713b23615d31680afeb0e9efe94d47d3d4229191198bb46d7485f9cb191acc  file1.txt
15b682ead6c12dedb1baf91231e1e89cfc7974b3787c1e2e01b986bffadae0ea  file2.txt
sha384sum <file>...

3.10 版本新增。

sha384sum 兼容的格式创建文件的 SHA384 校验和。

acc049fedc091a22f5f2ce39a43b9057fd93c910e9afd76a6411a28a8f2b8a12c73d7129e292f94fc0329c309df49434  file1.txt
668ddeb108710d271ee21c0f3acbd6a7517e2b78f9181c6a2ff3b8943af92b0195dcb7cce48aa3e17893173c0a39e23d  file2.txt
sha512sum <file>...

3.10 版本新增。

sha512sum 兼容的格式创建文件的 SHA512 校验和。

2a78d7a6c5328cfb1467c63beac8ff21794213901eaadafd48e7800289afbc08e5fb3e86aa31116c945ee3d7bf2a6194489ec6101051083d1108defc8e1dba89  file1.txt
7a0b54896fe5e70cca6dd643ad6f672614b189bf26f8153061c4d219474b05dad08c4e729af9f4b009f1a1a280cb625454bf587c690f4617c27e3aebdf3b7a2d  file2.txt
remove [-f] <file>...

自版本 3.17 起已弃用。

删除文件。计划的行为是,如果列出的任何文件已不存在,则命令返回非零退出码,但不记录任何消息。`-f` 选项将这种情况下的行为更改为返回零退出码(即成功)。 `remove` 不跟随符号链接。这意味着它只删除符号链接,而不删除它指向的文件。

实现存在 bug 且始终返回 0。如果不破坏向后兼容性,则无法修复。请改用 `rm`。

remove_directory <dir>...

自版本 3.17 起已弃用。

删除 <dir> 目录及其内容。如果目录不存在,则会被静默忽略。请改用 rm

版本 3.15 中添加: 支持多个目录。

版本 3.16 中添加: 如果 <dir> 是指向目录的符号链接,则只删除符号链接。

rename <oldname> <newname>

重命名文件或目录(在同一个卷上)。如果具有 <newname> 名称的文件已存在,则会被静默替换。

rm [-rRf] [--] <file|dir>...

在 3.17 版本中添加。

删除文件 <file> 或目录 <dir>。使用 -r-R 递归删除目录及其内容。如果列出的任何文件/目录不存在,命令将返回非零退出码,但不会记录任何消息。`-f` 选项会将此类情况下的行为更改为返回零退出码(即成功)。使用 `--` 来停止解释选项并将所有剩余参数视为路径,即使它们以 `-` 开头。

sleep <number>

新增于 3.0 版本。

睡眠 <number> 秒。 <number> 可以是浮点数。由于启动/停止 CMake 可执行文件的开销,实际最小值为约 0.1 秒。这在 CMake 脚本中用于插入延迟可能很有用。

# Sleep for about 0.5 seconds
execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 0.5)
tar [cxt][vf][zjJ] file.tar [<options>] [--] [<pathname>...]

创建或提取 tar 或 zip 存档。选项是:

c

创建包含指定文件的新存档。如果使用,则 <pathname>... 参数是必需的。

x

从存档中提取到磁盘。

版本 3.15 中添加: 可以<pathname>... 使用该参数仅提取选定的文件或目录。提取选定的文件或目录时,必须提供其确切名称(包括路径),如列表(`-t`)所示。

t

列出存档内容。

版本 3.15 中添加: 可以<pathname>... 使用该参数仅列出选定的文件或目录。

v

产生详细输出。

z

使用 gzip 压缩生成的存档。

j

使用 bzip2 压缩生成的存档。

J

版本 3.1 中新增。

使用 XZ 压缩生成的存档。

--zstd

版本 3.15 新增。

使用 Zstandard 压缩生成的存档。

--files-from=<file>

版本 3.1 中新增。

从给定文件中读取文件名,每行一个。空行将被忽略。行不能以 `-` 开头,但 `--add-file=` 除外,它用于添加以 `-` 开头的文件名。

--format=<format>

3.3 版本中新增。

指定要创建的存档的格式。支持的格式是:7zip, gnutar, pax, paxr(受限 pax,默认),和 zip

--mtime=<date>

版本 3.1 中新增。

指定在 tarball 条目中记录的修改时间。

--touch

在 3.24 版本中添加。

使用本地当前时间戳,而不是从存档中提取文件时间戳。

--

版本 3.1 中新增。

停止解释选项,并将所有剩余参数视为文件名,即使它们以 `-` 开头。

版本 3.1 中添加: LZMA (7zip) 支持。

版本 3.15 中添加: 命令现在即使某些文件不可读,也会继续将文件添加到存档中。此行为与经典的 tar 工具更一致。命令现在还会解析所有标志,如果提供了无效的标志,则会发出警告。

time <command> [<args>...]

运行 <command> 并显示经过的时间(包括 CMake 前端的开销)。

版本 3.5 中添加: 命令现在会将带有空格或特殊字符的参数正确地传递给子进程。这可能会破坏那些通过额外的引用或转义来规避此 bug 的脚本。

touch <file>...

如果文件不存在,则创建 <file>。如果 <file> 存在,则更改 <file> 的访问和修改时间。

touch_nocreate <file>...

如果文件存在,则 touch 该文件,但不要创建它。如果文件不存在,则会被静默忽略。

true

3.16 版新增。

什么也不做,退出码为 0。

Windows 特定命令行工具

以下 cmake -E 命令仅在 Windows 上可用:

delete_regv <key>

删除 Windows 注册表值。

env_vs8_wince <sdkname>

版本 3.2 中新增。

显示一个批处理文件,该文件为 VS2005 安装的指定 Windows CE SDK 设置环境。

env_vs9_wince <sdkname>

版本 3.2 中新增。

显示一个批处理文件,该文件为 VS2008 安装的指定 Windows CE SDK 设置环境。

write_regv <key> <value>

写入 Windows 注册表值。

运行 Find-Package 工具

CMake 为基于 Makefile 的项目提供了一个类似 pkg-config 的助手。

cmake --find-package [<options>]

注意

由于一些技术限制,此模式支持不佳。它被保留用于兼容性,但不应在新项目中使用。

--find-package

它使用 find_package() 命令搜索一个包,并将结果标志打印到 stdout。这可以代替 pkg-config 来查找纯 Makefile 项目或 Autoconf 项目中已安装的库,使用安装在系统 share/aclocal/cmake.m4 中的辅助宏。

使用此选项时,预计会有以下变量:

名称

find_package(<PackageName>) 中调用的包的名称。

COMPILER_ID

编译器 ID,用于搜索包,即 GNU/Intel/Clang/MSVC 等。

语言

用于搜索包的语言,即 C/CXX/Fortran/ASM 等。

MODE

包搜索模式。值可以是以下之一:

EXIST

仅检查给定包的存在性。

COMPILE

打印编译使用给定包的对象文件所需的标志。

LINK

打印链接时使用给定包所需的标志。

SILENT

(可选)如果为 TRUE,则不打印查找结果消息。

例如

cmake --find-package -DNAME=CURL -DCOMPILER_ID=GNU -DLANGUAGE=C -DMODE=LINK

运行工作流预设

在 3.25 版本中新增。

CMake Presets 提供了一种按顺序执行多个构建步骤的方法。

cmake --workflow <options>

选项包括

--workflow

使用以下选项之一选择一个 工作流预设

--preset <preset>, --preset=<preset>

使用工作流预设来指定一个工作流。项目二进制目录将从初始配置预设推断。当前工作目录必须包含 CMake 预设文件。有关更多详细信息,请参阅 preset

版本 3.31 中更改: 当紧跟在 `--workflow` 选项之后时,可以省略 `--preset` 参数,而只需提供 `` 名称。这意味着以下语法是有效的:

$ cmake --workflow my-preset
--list-presets

列出可用的工作流预设。当前工作目录必须包含 CMake 预设文件。

--fresh

执行构建树的全新配置,这与 cmake --fresh 效果相同。

查看帮助

要从 CMake 文档中打印选定的页面,请使用:

cmake --help[-<topic>]

使用以下选项之一:

-version [<file>], --version [<file>], /V [<file>]

显示程序名称/版本横幅并退出。如果给定,输出将打印到指定 <file>

-h, -H, --help, -help, -usage, /?

打印使用信息并退出。

使用说明描述了基本的命令行界面及其选项。

--help <keyword> [<file>]

打印一个 CMake 关键字的帮助。

<keyword> 可以是属性、变量、命令、策略、生成器或模块。

相关的 <keyword> 手册条目以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

3.28 版本变更:在 CMake 3.28 之前,此选项仅支持命令名称。

--help-full [<file>]

打印所有帮助手册并退出。

所有手册都以人类可读的文本格式打印。如果给定,输出将打印到指定 <file>

--help-manual <man> [<file>]

打印一个帮助手册并退出。

指定的手册以人类可读的文本格式打印。如果给定,输出将打印到指定 <file>

--help-manual-list [<file>]

列出可用的帮助手册并退出。

列表包含所有可以通过使用 `--help-manual` 选项后跟手册名称来获取帮助的手册。如果指定了 <file>,则输出将打印到该文件。

--help-command <cmd> [<file>]

打印一个命令的帮助并退出。

cmake-commands(7) 手册条目以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

--help-command-list [<file>]

列出可获取帮助的命令并退出。

列表包含所有可以通过使用 `--help-command` 选项后跟命令名称来获取帮助的命令。如果指定了 <file>,则输出将打印到该文件。

--help-commands [<file>]

打印 cmake-commands 手册并退出。

cmake-commands(7) 手册以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

--help-module <mod> [<file>]

打印一个模块的帮助并退出。

cmake-modules(7) 手册条目以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

--help-module-list [<file>]

列出可获取帮助的模块并退出。

列表包含所有可以通过使用 `--help-module` 选项后跟模块名称来获取帮助的模块。如果指定了 <file>,则输出将打印到该文件。

--help-modules [<file>]

打印 cmake-modules 手册并退出。

cmake-modules(7) 手册以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

--help-policy <cmp> [<file>]

打印一个策略的帮助并退出。

cmake-policies(7) 手册条目以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

--help-policy-list [<file>]

列出可获取帮助的策略并退出。

列表包含所有可以通过使用 `--help-policy` 选项后跟策略名称来获取帮助的策略。如果指定了 <file>,则输出将打印到该文件。

--help-policies [<file>]

打印 cmake-policies 手册并退出。

cmake-policies(7) 手册以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

--help-property <prop> [<file>]

打印一个属性的帮助并退出。

cmake-properties(7) 手册条目以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

--help-property-list [<file>]

列出可获取帮助的属性并退出。

列表包含所有可以通过使用 `--help-property` 选项后跟属性名称来获取帮助的属性。如果指定了 <file>,则输出将打印到该文件。

--help-properties [<file>]

打印 cmake-properties 手册并退出。

cmake-properties(7) 手册以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

--help-variable <var> [<file>]

打印一个变量的帮助并退出。

cmake-variables(7) 手册条目以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

--help-variable-list [<file>]

列出可获取帮助的变量并退出。

列表包含所有可以通过使用 `--help-variable` 选项后跟变量名称来获取帮助的变量。如果指定了 <file>,则输出将打印到该文件。

--help-variables [<file>]

打印 cmake-variables 手册并退出。

cmake-variables(7) 手册以人类可读的文本格式打印。如果指定了 <file>,则输出将打印到该文件。

要查看项目可用的预设,请使用:

cmake <source-dir> --list-presets

返回值(退出码)

正常终止时,cmake 可执行文件返回退出码 0

如果终止是由命令 message(FATAL_ERROR) 或其他错误条件引起的,则返回非零退出码。

另请参阅

以下资源可用于获取使用 CMake 的帮助

主页

https://cmake.com.cn

学习 CMake 的主要起点。

在线文档和社区资源

https://cmake.com.cn/documentation

此网页上可以找到可用文档和社区资源的链接。

论坛

https://discourse.cmake.org

论坛用于讨论和提问 CMake。