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

CMake脚本命令行传参疑问:CMAKE_ARGV包含--是否与书籍描述矛盾?

CMAKE_ARGC/CMAKE_ARGV为何包含--标记及cmake命令本身参数?

作者的表述没有错误,只是未明确说明完整细节:

  • CMAKE_ARGV变量会记录整个命令行的所有参数,包括cmake程序本身、-P选项、脚本文件名,甚至用作分隔的--标记。你执行的命令cmake -P file.cmake -- arg,参数序列自然就是cmake、-P、file.cmake、--、arg,因此CMAKE_ARGC=5是完全正确的结果。
  • 作者提到的“通过--标记之后的内容向脚本传递参数”,核心含义是**--之后的内容会被CMake完整保留,不会被当作自身的命令行选项解析**,但这些自定义参数只是CMAKE_ARGV中的一部分,而非全部。
  • 若你只想获取自己传递的自定义参数,有两种处理方式:
    1. 手动过滤:从CMAKE_ARGV的索引4开始取(索引0为cmake程序名,1为-P,2为脚本名,3为--);
    2. 使用CMake 3.19+新增的CMAKE_SCRIPT_ARGC和CMAKE_SCRIPT_ARGV<n>变量:这两个变量会直接忽略cmake自身参数和--标记,仅统计并存储你传递的自定义参数。比如执行同样的命令,CMAKE_SCRIPT_ARGC会返回1,CMAKE_SCRIPT_ARGV0的值就是arg,这更符合多数场景下的使用需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:31:04