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 命令查看。