一. 简介
前一篇文章学习 cmake中的定义函数基本用法。文章如下:
cmake进阶:定义函数的使用方法-CSDN博客
本文继续学习 cmake中的定义函数,主要学习函数的内部变量。
二. cmake进阶:定义函数的内部变量
上一篇文章说过,在 cmake 中,调用函数时,实际传入的参数个数不需要等于函数定义的参数个数(甚至函数定义时,参数个数为 0),但是实际传入的参数个数必须大于或等于函数定义的参数个数。
这种设计有什么用途呢?
这种设计可用于实现可变参函数(与 C 语言中的可变 参数函数概念相同)。
但是有个问题,就如上例中所示,用户传入了 3 个参数,但是函数定义时并没有定义这些形参,函数中如何引用到第二个参数 World 以及第三个参数 China 呢?
其实 cmake 早就为大家考虑到 了,并给出了相应的解决方案,就是接下来向大家介绍的内部变量。
1. 函数的内部变量
function() 函数中可以使用内部变量,所谓函数的内部变量,指的就是在函数内部使用的内置变量。
这些内部变量如下所示:
# function 函数测试
# 函数名: xyz
function(xyz arg1 arg2)message("ARGC: ${ARGC}")message("ARGV: ${ARGV}")message("ARGN: ${ARGN}")message("ARGV0: ${ARGV0}")message("ARGV1: ${ARGV1}")# 循环打印出各个参数set(i 0)foreach(loop ${ARGV})message("arg${i}: " ${loop})math(EXPR i "${i} + 1")endforeach()
endfunction()# 调用函数
xyz(A B C D E F G)
进入 build目录下,运行 "cmake .." 命令后如下:
这个大家自己去对照一下就知道了。
下一篇文章学习 函数的作用域。