merlinzjl

导航

CMake 12 函数和宏

CMake中用以下指令定义函数

function(<name> [<arg1> …])

  <commands>

endfunction()

 

function指令,指定函数的名称,参数名称

endfunction指令,用于结束函数的定义,可以传入与function指令中同样的函数名称作为参数,也可以不传。

这两个指令中间就是函数要执行的命令。

 

调用时直接使用函数名即可,不区分大小写

即如果这样定义函数:

function(func)

         <command>

endfunction()

则可以这样调用 func()  或者 FUNC()

 

函数的参数

  1. ARGC:参数的个数
  2. ARGV0、ARGV1、…ARGV#:第#个参数的值
  3. ARGV:所有传入的参数值的列表
  4. ARGN:如果在定义函数时,显式的指定了两个参数,而在调用时,传入了五个参数,则后面的三个参数的值就存在在这个变量里

注意:set(<variable> <value>... [PARENT_SCOPE]),如果PARENT_SCOPE指定了,那么变量将在当前作用域的父作用域中生效。

 

CMake中的宏与函数很相似,但也有区别。

相同:调用方式相同,同样是不区分名称大小写,参数的引用同样可用,如${ARGC},${ARGN}等。

区别:CMake的宏跟C语言的宏类似,直接替换,宏的参数相关的引用,并不是真实的变量,而函数中对函数的引用,则是真实的变量,函数有自身的域而宏没有。

宏定义使用 macro 和 endmacro指令。

posted on 2020-10-30 23:21  merlinzjl  阅读(182)  评论(0编辑  收藏  举报