CMake 命令行参数全解析(2025年更新版)

CMake 命令行参数全解析(2025年更新版)

CMake 作为跨平台构建系统的核心工具,其命令行参数对项目配置、构建流程控制至关重要。以下基于最新实践和官方文档整理 CMake 的完整参数体系:

一、核心配置参数

​1 ​变量定义参数​​

-D :=

动态设置 CMake 缓存变量,支持布尔值、字符串、路径等类型。例如:

cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON

CMAKE_BUILD_TYPE:控制构建类型(Debug/Release/RelWithDebInfo)

BUILD_SHARED_LIBS:全局控制生成动态库或静态库

​2 ​生成器选择​​

-G

指定构建系统生成器,支持多平台适配:

cmake -G "Ninja" # 生成 Ninja 构建文件

cmake -G "Visual Studio 17 2022" # 生成 VS 解决方案

常用选项:Unix Makefiles、Xcode、Ninja Multi-Config

二、路径控制参数

1 ​​源码与构建目录​​

-S

显式指定源码根目录(含 CMakeLists.txt 的路径)-B

设定构建目录(二进制输出目录),避免污染源码:

cmake -S src -B build

↑ 替代传统用法 mkdir build && cd build && cmake ..

2 ​​输出路径定制​​

通过变量定义可执行文件/库的存放路径:

CMAKE_RUNTIME_OUTPUT_DIRECTORY

可执行文件输出目录(如 bin/)CMAKE_LIBRARY_OUTPUT_DIRECTORY

动态库输出目录(如 lib/)CMAKE_ARCHIVE_OUTPUT_DIRECTORY

静态库输出目录(如 lib/static/)

示例:

cmake -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=bin -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=lib

三、构建与编译控制

1 ​​构建命令​​

--build

触发实际编译过程,替代直接调用 make 或 ninja:

cmake --build build --parallel 8 --clean-first

--target:指定编译目标(如 install 或自定义目标)

--config:多配置生成器下的构建类型选择(如 --config Debug)

2 ​​编译器选项​​

通过变量传递编译标志:

CMAKE_CXX_FLAGS

C++ 编译选项(如优化级别 -O3)

CMAKE_EXE_LINKER_FLAGS

可执行文件链接选项(如 -fsanitize=address)

示例:

cmake -DCMAKE_CXX_FLAGS="-Wall -Wextra"

四、安装与部署参数

1 安装路径配置​**​

CMAKE_INSTALL_PREFIX

定义 make install 的默认安装路径:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local

支持分组件安装(如头文件、库文件分离)

2 ​​安装命令扩展​​

通过 install() 命令在 CMakeLists.txt 中定义安装规则:

install(TARGETS myapp DESTINATION bin)

install(DIRECTORY include/ DESTINATION include)

支持 RUNTIME(可执行文件)、LIBRARY(动态库)、ARCHIVE(静态库)分类

五、调试与日志参数

1 ​​日志级别控制​​

--log-level=

设置日志详细程度(ERROR, WARNING, NOTICE, STATUS, VERBOSE, DEBUG):

cmake --log-level=DEBUG

​2 ​跟踪与诊断​​

--trace

打印 CMake 执行过程的详细步骤

--debug-output

显示调试信息(如变量展开过程)

六、其他实用参数

​1 ​工具链文件​​

-DCMAKE_TOOLCHAIN_FILE=

指定交叉编译工具链配置文件(常用于嵌入式开发)

cmake -DCMAKE_TOOLCHAIN_FILE=arm-gcc.cmake

2 ​​模块路径扩展​

​ -DCMAKE_MODULE_PATH=

添加自定义 CMake 模块搜索路径(如第三方库的 Find*.cmake 文件)

3 ​清空缓存​​

-U

删除匹配的缓存变量(支持通配符 * 和 ?):

cmake -U "BUILD_*" # 删除所有以 BUILD_ 开头的缓存变量

完整参数速查表

参数类别关键参数示例作用文档来源变量定义-D, -U目录控制-S, -B, CMAKE_*_OUTPUT_DIRECTORY构建控制--build, --target, --config安装配置CMAKE_INSTALL_PREFIX, install()调试工具--trace, --debug-output, --log-level高级定制CMAKE_TOOLCHAIN_FILE, CMAKE_MODULE_PATH

注:本文档整合自 CMake 3.28+ 版本特性,部分参数可能因版本差异存在变化,建议参考官方文档获取最新信息。如需完整参数列表,可通过 cmake --help-full 命令查看。

相关推荐