cmake(1)
概要
cmake [<options>] (<path-to-source> | <path-to-existing-build>) cmake [(-D <var>=<value>)...] -P <cmake-script-file> cmake --build <dir> [<options>...] [-- <build-tool-options>...] cmake --open <dir> cmake -E <command> [<options>...] cmake --find-package <options>...
说明
“cmake”可执行文件是CMake命令行界面。它可用于在脚本中配置项目。可以使用-D选项在命令行上指定项目配置设置。
CMake是一个跨平台的构建系统生成器。项目使用名称为CMakeLists.txt的源树的每个目录中包含的与平台无关的CMake列表文件指定其构建过程。用户使用CMake在其平台上为本机工具生成构建系统来构建项目。
选项
-
预加载脚本以填充缓存。
当cmake首次在空构建树中运行时,它会创建一个CMakeCache.txt文件,并使用项目的可自定义设置填充它。此选项可用于指定在第一次通过项目的cmake listfiles之前从中加载缓存条目的文件。加载的条目优先于项目的默认值。给定文件应该是包含使用CACHE选项的SET命令的CMake脚本,而不是缓存格式文件。
-
创建一个cmake缓存条目。
当cmake首次在空构建树中运行时,它会创建一个CMakeCache.txt文件,并使用项目的可自定义设置填充它。此选项可用于指定优先于项目默认值的设置。可以根据需要针对尽可能多的高速缓存条目重复该选项。
如果
:
给出该部分,则它必须是由指定的类型之一set()
命令文档的CACHE
签名。如果:
省略该部分,则如果条目已不存在,则将创建没有类型的条目。如果项目中的命令将类型设置为PATH
或FILEPATH
然后
将转换为绝对路径。此选项也可以作为单个参数给出:
-D:
或= -D=
。 -
从CMake缓存中删除匹配的条目。
此选项可用于从CMakeCache.txt文件中删除一个或多个变量,使用*和?表示表达式。得到支持。可以根据需要针对尽可能多的高速缓存条目重复该选项。
小心使用,可以使您的CMakeCache.txt无法正常工作。
-
指定构建系统生成器。
CMake可能在某些平台上支持多个本机构建系统。生成器负责生成特定的构建系统。可能的生成器名称在。中指定
cmake-generators(7)
手册。 -
如果支持,则生成器的工具集规范。
一些CMake生成器支持工具集规范,以告诉本机构建系统如何选择编译器。见
CMAKE_GENERATOR_TOOLSET
变量的详细信息。 -
如果生成器支持,请指定平台名称。
一些CMake生成器支持为本机构建系统提供的平台名称,以选择编译器或SDK。见
CMAKE_GENERATOR_PLATFORM
变量的详细信息。 -
抑制开发人员警告。
禁止针对CMakeLists.txt文件的作者的警告。默认情况下,这也会关闭弃用警告。
-
启用开发人员警告。
启用适用于CMakeLists.txt文件作者的警告。默认情况下,这也会启用弃用警告。
-
使开发人员警告错误。
发出针对CMakeLists.txt文件作者错误的警告。默认情况下,这也会将已弃用的警告设置为错误。
-
使开发人员警告不是错误。
针对CMakeLists.txt文件的作者发出的警告不是错误。默认情况下,这也会将已弃用的警告作为错误关闭。
-
启用已弃用的功能警告。
启用警告以使用已弃用的功能,这些功能适用于CMakeLists.txt文件的作者。
-
禁止弃用功能警告。
禁止使用已弃用的功能的警告,这些功能适用于CMakeLists.txt文件的作者。
-
使弃用的宏和函数警告错误。
对使用不推荐使用的宏和函数发出警告,这些宏和函数适用于CMakeLists.txt文件的作者,错误。
-
弃用的宏和函数警告不是错误。
对使用不推荐使用的宏和函数发出警告,这些宏和函数适用于CMakeLists.txt文件的作者,而不是错误。
- 请参阅 命令行工具模式 。
-
列出非高级缓存变量。
列表缓存变量将运行CMake并列出CMake缓存中未标记为INTERNAL或ADVANCED的所有变量。这将有效地显示当前的CMake设置,然后可以使用-D选项进行更改。更改某些变量可能会导致创建更多变量。如果指定了A,则它还将显示高级变量。如果指定了H,它还将显示每个变量的帮助。
- 请参阅 构建工具模式 。
- 在关联的应用程序中打开生成的项目。这仅由一些发电机支持。
-
仅查看模式。
仅加载缓存。实际上不要运行configure和生成步骤。
-
处理脚本模式。
将给定的cmake文件处理为以CMake语言编写的脚本。不执行配置或生成步骤,并且不修改缓存。如果使用-D定义变量,则必须在-P参数之前完成。
- 请参阅 查找包装工具模式 。
-
生成依赖关系的graphviz,请参阅
CMakeGraphVizOptions
更多。生成graphviz输入文件,该文件将包含项目中的所有库和可执行依赖项。请参阅文档
CMakeGraphVizOptions
更多细节。 -
转储有关此系统的信息。
转储有关当前系统的各种信息。如果从CMake项目的二叉树顶部运行,它将转储其他信息,如缓存,日志文件等。
-
不要删除try_compile构建树。仅在一次try_compile上有用。
不要删除为try_compile调用创建的文件和目录。这在调试失败的try_compiles时很有用。然而,它可能会改变try-compiles的结果,因为之前的try-compile中的旧垃圾可能导致不同的测试无法正确通过或失败。此选项最好一次用于一次try-compile,并且仅在调试时使用。
-
将cmake置于调试模式。
在cmake运行期间打印额外信息,如带有消息(send_error)调用的堆栈跟踪。
-
将cmake置于跟踪模式。
打印所有来电的跟踪记录。
-
将cmake置于跟踪模式。
喜欢
--trace
,但变量扩大了。 -
将cmake置于跟踪模式,但仅输出指定文件的行。
允许多个选项。
-
警告未初始化的值。
使用未初始化的变量时打印警告。
-
警告未使用的变量。
查找已声明或已设置但未使用的变量。
-
不要警告命令行选项。
找不到在命令行上声明但未使用的变量。
-
查找系统文件中变量使用的问题。
通常,仅在CMAKE_SOURCE_DIR和CMAKE_BINARY_DIR中搜索未使用和未初始化的变量。该标志告诉CMake也警告其他文件。
-C
-D :=, -D =
-U
-G
-T
-A
-Wno-dev
-Wdev
-Werror=dev
-Wno-error=dev
-Wdeprecated
-Wno-deprecated
-Werror=deprecated
-Wno-error=deprecated
-E [...]
-L[A][H]
--build
--open
-N
-P
--find-package
--graphviz=[file]
--system-information [file]
--debug-trycompile
--debug-output
--trace
--trace-expand
--trace-source=
--warn-uninitialized
--warn-unused-vars
--no-warn-unused-cli
--check-system-vars
-
打印使用信息并退出。
用法描述了基本的命令行界面及其选项。
-
显示程序名称/版本标题并退出。
如果指定了文件,则会将版本写入其中。如果给出,帮助将打印到命名的
ile。 -
打印所有帮助手册并退出。
所有手册均以人类可读的文本格式打印。如果给出,帮助将打印到命名的
ile。 -
打印一份帮助手册并退出。
指定的手册以人类可读的文本格式打印。如果给出,帮助将打印到命名的
ile。 -
列出可用的帮助手册并退出。
该列表包含所有可通过使用
--help-manual
选项后跟手册名称获得帮助的手册。如果给出,帮助将打印到命名的ile。 -
打印一个命令的帮助并退出。
该
cmake-commands(7)
手动输入以
人类可读的文本格式打印。如果给出,帮助将打印到命名的ile。 -
列出命令并提供帮助并退出。
该列表包含可以通过使用
--help-command
选项后跟命令名称获得帮助的所有命令。如果给出,帮助将打印到命名的ile。 -
打印cmake-commands手册并退出。
该
cmake-commands(7)
手册以人类可读的文本格式打印。如果给出,帮助将打印到命名的ile。 -
打印一个模块的帮助并退出。
该
cmake-modules(7)
手动输入以
人类可读的文本格式打印。如果给出,帮助将打印到命名的ile。 -
列出提供帮助的模块并退出。
该列表包含所有可通过使用
--help-module
选项后跟模块名称获取帮助的模块。如果给出,帮助将打印到命名的ile。 -
打印cmake-modules手册并退出。
该
cmake-modules(7)
手册以人类可读的文本格式打印。如果给出,帮助将打印到命名的ile。 -
打印一个策略的帮助并退出。
该
cmake-policies(7)
手动输入以
人类可读的文本格式打印。如果给出,帮助将打印到命名的ile。 -
列出可获得帮助的政策并退出。
该列表包含使用
--help-policy
选项后跟策略名称可获取帮助的所有策略。如果给出,帮助将打印到命名的ile。 -
打印cmake-policies手册并退出。
该
cmake-policies(7)
手册以人类可读的文本格式打印。如果给出,帮助将打印到命名的ile。 -
打印一个属性的帮助并退出。
该
cmake-properties(7)
手动条目以
人类可读的文本格式打印。如果给出,帮助将打印到命名的ile。 -
列出可用帮助的属性并退出。
该列表包含可以通过使用
--help-property
选项后跟属性名称获得帮助的所有属性。如果给出,帮助将打印到命名的ile。 -
打印cmake-properties手册并退出。
该
cmake-properties(7)
手册以人类可读的文本格式打印。如果给出,帮助将打印到命名的ile。 -
打印一个变量的帮助并退出。
该
cmake-variables(7)
手动输入以人类可读的文本格式打印。如果给出,帮助将打印到命名的
ile。 -
列出变量并提供帮助并退出。
该列表包含可以通过使用
--help-variable
选项后跟变量名称获得帮助的所有变量。如果给出,帮助将打印到命名的ile。 -
打印cmake-variables手动并退出。
该
cmake-variables(7)
手册以人类可读的文本格式打印。如果给出,帮助将打印到命名的ile。
--help,-help,-usage,-h,-H,/?
--version,-version,/V []
--help-full []
--help-manual []
--help-manual-list []
--help-command []
--help-command-list []
--help-commands []
--help-module []
--help-module-list []
--help-modules []
--help-policy []
--help-policy-list []
--help-policies []
--help-property []
--help-property-list []
--help-properties []
--help-variable []
--help-variable-list []
--help-variables []
构建工具模式
CMake提供命令行签名来构建已生成的项目二叉树:
cmake --build <dir> [<options>...] [-- <build-tool-options>...]
这将使用以下选项抽象本机构建工具的命令行界面:
- 要构建的项目二进制目录。这是必需的,必须先行。
-
构建
而不是默认目标。只能指定一次。 -
对于多配置工具,请选择配置
。 -
clean
首先构建目标,然后构建。(仅限清洁,请使用。)--target clean
- 忽略。行为在CMake> = 3.0中是默认的。
- 将剩余选项传递给本机工具。
--build
--target
--config
--clean-first
--use-stderr
--
没有选项可以运行以获得快速帮助。cmake --build
命令行工具模式
CMake通过签名提供内置命令行工具:
cmake -E <command> [<options>...]
运行或获取命令摘要。可用的命令是:cmake -E
cmake -E help
-
以JSON格式报告cmake功能。输出是一个带有以下键的JSON对象:
-
带有版本信息的JSON对象。钥匙是:
-
cmake显示的完整版本字符串
--version
。 - 整数形式的主要版本号。
- 整数形式的次要版本号。
- 整数形式的补丁级别。
- cmake版本后缀字符串。
- 如果cmake构建来自脏树,则设置bool。
string
major
minor
patch
suffix
isDirty
-
cmake显示的完整版本字符串
-
列表可用的生成器。每个生成器都是一个JSON对象,具有以下键:
- 包含生成器名称的字符串。
-
true
如果生成器支持工具集,false
否则。 -
true
如果发电机支持平台,false
否则。 - 包含与生成器兼容的所有额外生成器的字符串列表。
name
toolsetSupport
platformSupport
extraGenerators
-
true
如果cmake支持服务器模式,false
否则。
version
generators
serverMode
-
- 更改当前工作目录并运行命令。
-
检查是否
相同
。如果文件相同,则返回0,否则返回1。 -
将文件复制到
(文件或目录)。如果指定了多个文件,则
必须是目录且必须存在。不支持通配符。 -
将目录复制到
目录。如果
目录不存在,则将创建该目录。 -
如果文件已更改,则将文件复制到(文件或目录)。如果指定了多个文件,则
必须是目录且必须存在。 - 将参数显示为文本。
- 将参数显示为文本但不显示新行。
- 在修改后的环境中运行命令。
- 显示当前环境变量。
-
创建
目录。如有必要,也可以创建父目录。如果目录已存在,则将以静默方式忽略。 -
以
md5sum
兼容格式创建文件的MD5校验和:351abe79cd3800b38cdfb25d45015a15 file1.txt 052f86c15bbde68af55c7f7b340ab639 file2.txt
-
以
sha1sum
兼容格式创建文件的SHA1校验和:4bb7932a29e6f73c97bb9272f2bdc393122f86e0 file1.txt 1df4c8f318665f9a5f2ed38f55adadb7ef9f559c file2.txt
-
以
sha224sum
兼容格式创建SHA224校验和文件:b9b9346bc8437bbda630b0b7ddfc5ea9ca157546dbbf4c613192f930 file1.txt 6dfbe55f4d2edc5fe5c9197bca51ceaaf824e48eba0cc453088aee24 file2.txt
-
以
sha256sum
兼容格式创建SHA256校验和文件:76713b23615d31680afeb0e9efe94d47d3d4229191198bb46d7485f9cb191acc file1.txt 15b682ead6c12dedb1baf91231e1e89cfc7974b3787c1e2e01b986bffadae0ea file2.txt
-
以
sha384sum
兼容格式创建SHA384校验和文件:acc049fedc091a22f5f2ce39a43b9057fd93c910e9afd76a6411a28a8f2b8a12c73d7129e292f94fc0329c309df49434 file1.txt 668ddeb108710d271ee21c0f3acbd6a7517e2b78f9181c6a2ff3b8943af92b0195dcb7cce48aa3e17893173c0a39e23d file2.txt
-
以
sha512sum
兼容格式创建SHA512校验和文件:2a78d7a6c5328cfb1467c63beac8ff21794213901eaadafd48e7800289afbc08e5fb3e86aa31116c945ee3d7bf2a6194489ec6101051083d1108defc8e1dba89 file1.txt 7a0b54896fe5e70cca6dd643ad6f672614b189bf26f8153061c4d219474b05dad08c4e729af9f4b009f1a1a280cb625454bf587c690f4617c27e3aebdf3b7a2d file2.txt
-
删除文件。如果任何列出的文件已不存在,则该命令将返回非零退出代码,但不会记录任何消息。该
-f
选项改变行为以在这种情况下返回零退出代码(即成功)。 - 删除目录及其内容。如果目录不存在,它将被静默忽略。
- 重命名文件或目录(在一个卷上)。
-
发射
cmake-server(7)
模式。 - 睡眠给定的秒数。
-
创建或提取tar或zip存档。选项包括:
-
停止解释选项并将所有剩余参数视为文件名,即使它们开始
-
。 -
从给定文件中读取文件名,每行一个。空行被忽略。
-
除了--add-file=
添加名称以其开头的文件外,行可能无法启动-
。 - 指定tarball条目中记录的修改时间。
-
指定要创建的存档的格式。支持的格式有:
7zip
,gnutar
,pax
,paxr
(限制PAX,默认值),和zip
。
--
--files-from=
--mtime=
--format=
-
停止解释选项并将所有剩余参数视为文件名,即使它们开始
- 运行命令并显示已用时间。
- 触摸文件。
- 触摸文件(如果存在)但不创建它。如果文件不存在,则会以静默方式忽略。
capabilities
chdir [...]
compare_files
copy ...
copy_directory ...
copy_if_different ...
echo [...]
echo_append [...]
env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...
environment
make_directory ...
md5sum ...
sha1sum ...
sha224sum ...
sha256sum ...
sha384sum ...
sha512sum ...
remove [-f] ...
remove_directory
rename
server
sleep ...
tar [cxt][vf][zjJ] file.tar [...] [--] [...]
time [...]
touch
touch_nocreate
特定于UNIX的命令行工具
以下命令仅在UNIX上可用:cmake -E
-
创建符号链接
命名
。
create_symlink
注意
创建符号链接的路径必须事先存在。
特定于Windows的命令行工具
以下命令仅在Windows上可用:cmake -E
- 删除Windows注册表值。
- 显示批处理文件,该文件为VS2005中安装的Windows CE SDK设置环境。
- 显示批处理文件,该文件为VS2008中安装的Windows CE SDK设置环境。
- 写Windows注册表值。
delete_regv
env_vs8_wince
env_vs9_wince
write_regv
查找包工具模式
CMake为基于Makefile的项目提供了一个帮助程序,其签名如下:
cmake --find-package <options>...
它以类似pkg-config的模式运行。
使用搜索包 find_package()
并将生成的标志打印到stdout。这可以用于使用cmake而不是pkg-config来查找基于Makefile的纯项目或基于autoconf的项目(via share/aclocal/cmake.m4
)中的已安装库。
注意
由于某些技术限制,此模式不受支持。它保持兼容性,但不应在新项目中使用。
另见
以下资源可用于使用CMake获取帮助:
-
主页
-
https://cmake.org
了解CMake的主要出发点。
经常问的问题
-
https://cmake.org/Wiki/CMake_FAQ
提供Wiki,其中包含常见问题的答案。
在线文档
-
https://cmake.org/documentation
可在此网页上找到可用文档的链接。
邮件列表
-
https://cmake.org/mailing-lists
有关使用cmake的帮助和讨论,cmake @ cmake提供了一个邮件列表。组织。该列表仅限会员,但可以在CMake网页上注册。在将问题发布到列表之前,请先阅读https://cmake.org上的完整文档。