【CMake】专用变量 ARGC ARGV ARGN 代表含义

参考了两位大神的说明,自己跑了一下,发现有些出入,可能是版本问题,我定义 CMake VERSION 至少是 3.10 版本
下面是我自己跑的结果:
CMake 中的宏(macro)和函数(function)都支持动态参数

专用变量 ARGC: 代表的是函数或者宏传递的参数个数

专用变量 ARGV :代表所有传递的参数,使用list表示,其中如果函数有多个参数,要取得某个参数可以使用ARGV0,ARGV1,ARGV2 等

专用变量 ARGV0,ARGV1,… :顺序代表传入的参数

专用变量 ARGN : 包含传入参数的 list, 与ARGV不同的是并不是代表所有参数,而是指宏或者函数声明的参数之后的所有参数。

project(argTest)
cmake_minimum_required(VERSION 3.10)

# 定义一个宏,显式声明了两个参数 para1, para2
macro(argn_test para1 para2)
	MESSAGE(STATUS ARGC=${ARGC})
	MESSAGE(STATUS ARGV=${ARGV})
	MESSAGE(STATUS ARGN=${ARGN})
	MESSAGE(STATUS ARGV0=${ARGV0})
	MESSAGE(STATUS ARGV1=${ARGV1})
	MESSAGE(STATUS ARGV2=${ARGV2})
	MESSAGE(STATUS ARGV3=${ARGV3})
endmacro(argn_test para1 para2)

# 调用宏时传入4个参数
arg_test(para_1, para_2,para_3,para_4)

CMake 脚本执行

mkdir build && cd build && cmake ..

输出结果中会显示

-- ARGC=4
-- ARGV=para_1,para_2,para_3,para_4
-- ARGN=para_3,para_4
-- ARGV0=para_1,
-- ARGV1=para_2,
-- ARGV2=para_3,
-- ARGV3=para_4

参考链接如下:
CMake中的ARGC ARGV 和ARGN参数意义
cmake:macro,function中ARGV,ARGN参数的区别

CMake中,$符号通常用作变量的引用符号。它用于引用变量的值或进行字符串替换。在CMakeLists.txt文件中,可以使用$符号来引用变量的值,例如${VAR_NAME}。这样可以在CMake配置过程中使用变量的值来进行条件判断、路径拼接等操作。此外,$符号还可以用于字符串替换,例如将一个字符串中的某个子字符串替换为另一个字符串。在CMake中,可以使用字符串替换操作来修改文件路径、修改编译选项等。总之,$符号在CMake中具有重要的意义,用于引用变量的值和进行字符串替换。 #### 引用[.reference_title] - *1* [CMake(九):生成器表达式](https://blog.youkuaiyun.com/jjjstephen/article/details/122467789)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [CMake中macro的使用](https://blog.youkuaiyun.com/fengbingchun/article/details/127145153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [CMake中的ARGC ARGVARGN参数意义](https://blog.youkuaiyun.com/weixin_42730667/article/details/107317483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值