如何让ccmake/cmake生成包含当前配置选项的命令行?
保存CMake配置为单条命令行的方法
方法1:导出自定义配置变量生成命令行
CMake自带工具可以帮你提取手动修改过的配置项,无需手动解析CMakeCache.txt:
- 在已配置完成的构建目录下,执行以下命令过滤出非默认的缓存变量(即你通过ccmake调整过的选项):
各参数作用:cmake -LAH | grep -v "^//" | grep -v "^--" | grep -E "^[A-Z_]+:.*="-LAH:列出所有缓存变量(含高级变量)并附带说明- 后续过滤命令:剔除注释、分隔线,只保留有效的变量定义行
- 将输出的变量转换成
-D<VAR>=<VALUE>格式拼接成命令,比如输出BUILD_TESTING:BOOL=ON和PROJECT_VERSION:STRING=1.0.0,最终复用命令为:cmake -S <源码路径> -B <构建路径> -DBUILD_TESTING=ON -DPROJECT_VERSION=1.0.0
方法2:直接加载缓存文件复用配置
如果不想手动提取变量,可直接让CMake加载已有的缓存文件完成配置:
cmake -C <原构建路径>/CMakeCache.txt -S <源码路径> -B <新构建路径>
-C参数会让CMake读取指定缓存文件中的所有配置,自动应用到新构建目录。此方式会包含CMake自动生成的内部变量,但通常不会影响配置有效性,CMake会根据新环境自动校验并调整无关变量。
方法3:编写轻量化配置脚本
若需要更可控的配置复用(只保留自己关心的选项),可以创建一个配置脚本(比如my_project_config.cmake):
set(BUILD_TESTING ON CACHE BOOL "Build test targets" FORCE) set(PROJECT_VERSION "1.0.0" CACHE STRING "Project release version" FORCE) # 按需添加其他自定义配置项
之后在新环境执行:
cmake -C my_project_config.cmake -S <源码路径> -B <构建路径>
这种方式能避免引入缓存文件中的无关内部变量,更适合跨机器复用。
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

