【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参数的区别

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值