You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看项目中之前使用的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:17:45