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

如何通过CMake命令行仅打印目标变量的最终值?

解决CMake命令行直接打印指定变量最终值的方法

方法1:打印缓存变量(适用于set(... CACHE)定义的变量)

如果目标变量是CMake缓存变量,直接用-LAH参数列出所有缓存变量,配合grep过滤,同时抑制无关输出:

cmake -S . -B build -DENABLE_MODULE_A=OFF -DENABLE_MODULE_B=OFF -DENABLE_MODULE_C=OFF --log-level=ERROR -LAH | grep "^VARIABLE_IM_INTERESTED_IN:"
  • --log-level=ERROR:只保留错误和变量列表输出,避免配置过程的冗余信息干扰
  • -LAH:L表示列出缓存变量,A包含高级变量,H显示变量的帮助注释(不需要注释可改用-LA)

方法2:通用方法(支持所有变量,包括普通非缓存变量)

如果变量是普通变量(未加入缓存),或者想确保拿到最终配置后的变量值,用cmake -P执行一段临时脚本,无需修改原CMakeLists.txt:

cmake -S . -B build -DENABLE_MODULE_A=OFF -DENABLE_MODULE_B=OFF -DENABLE_MODULE_C=OFF -P <(echo 'message(STATUS "最终值: ${VARIABLE_IM_INTERESTED_IN}")')
  • <(echo ...):通过进程替换生成临时脚本内容,无需创建物理文件
  • CMake会先完成完整的配置流程(执行所有CMakeLists.txt逻辑),然后执行这段临时脚本打印变量的最终展开值

为什么替代原有方法?

原有--trace-expand + grep的方式会输出变量的每一次修改过程,导致拿到大量中间值,需要手动筛选最终结果;上述两种方法直接获取配置完成后的最终变量值,步骤更简洁,结果更准确。

内容的提问来源于stack exchange,提问作者polemon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:50:24