如何查看项目中之前使用的CMake预设?
查看已使用的CMake预设
方法1:直接读取构建缓存文件
CMake会在构建目录的CMakeCache.txt中记录所用的预设,你可以通过命令快速提取:
grep -E "CMAKE_(BUILD|CONFIGURE)_PRESET" build/CMakeCache.txt
输出示例:CMAKE_CONFIGURE_PRESET:STRING=my_preset,其中my_preset就是你之前使用的预设名称。
方法2:通过CMake命令查询缓存
使用-N参数跳过配置过程,仅加载缓存,再用-L列出所有缓存变量,过滤预设相关项:
cmake -L -N build/ | grep -E "CMAKE_(BUILD|CONFIGURE)_PRESET"
通过变量回溯对应预设
如果缓存中的预设记录丢失,或者需要验证当前构建与预设的匹配性,可以通过对比变量的方式实现,以下是具体思路和示例:
核心逻辑
- 用
cmake --list-presets获取所有可用预设名称 - 导出每个预设的变量配置(使用
-N避免实际执行配置) - 将当前构建目录的缓存变量与各预设变量对比,找到匹配项
示例Bash脚本
#!/bin/bash # 定义构建目录 BUILD_DIR="build" # 获取所有配置预设的名称 PRESETS=$(cmake --list-presets configure | awk '{print $1}') # 导出当前构建的缓存变量到临时文件,过滤注释行 cmake -L -N "$BUILD_DIR" | grep -v "^--" > current_build_vars.txt # 遍历每个预设进行对比 for preset in $PRESETS; do # 导出当前预设的变量到临时文件 cmake --preset "$preset" -N -L --no-warn-unused-cli | grep -v "^--" > "${preset}_vars.txt" # 对比变量文件 if diff current_build_vars.txt "${preset}_vars.txt" > /dev/null; then echo "当前构建匹配预设:$preset" # 清理临时文件 rm current_build_vars.txt "${preset}_vars.txt" exit 0 fi # 清理当前预设的临时文件 rm "${preset}_vars.txt" done echo "未找到匹配的预设" rm current_build_vars.txt
注意事项
- 脚本会忽略以
--开头的注释行,仅对比实际变量 - 如果预设包含动态生成的变量(如依赖路径、系统特定路径),可能会出现误判,可修改脚本只对比关键变量(比如
CMAKE_C_COMPILER、CMAKE_BUILD_TYPE、CMAKE_INSTALL_PREFIX等) - 使用
--no-warn-unused-cli避免因预设中未用到的命令行参数产生警告
内容的提问来源于stack exchange,提问作者Michael1248
相关产品推荐
相关产品推荐

