一、定义
1、可以把它理解为C++的宏,命令如下
macro(<name> [<arg1> ...])
<commands>
endmacro()
定义一个名为
message("命名参数是必须的,如果未提供将触发error。参数名称之间不需要逗号")
macro(addr csdn github)
message("csdn addr:${csdn}")
message("github addr:${github}")
endmacro()
addr("https://blog.csdn.net" "https:://github.com")
2、可选参数(optional arguments):可以使用一些预定义的变量访问可选参数,示例代码段如下:
- ARGC:参数总数(命名参数+可选参数)。
- ARGV:包含命名参数和可选参数的变量列表。
- ARGN:仅包含可选参数的变量列表。
message("可以使用一些预定义的变量访问可选参数:ARGC,ARGV,ARGN")
macro(name_list name1 name2)
message("argument cout:${ARGC}")
message("all arguments:${ARGV}")
message("optional argument:${ARGN}")
endmacro
name_list(Jack Kate Jony Tom)
///argument cout:4
///all arguments:JackKateJonyTom
///optional argument:JonyTom
name_list(Jack Kate)
///argument cout:4=2
///all arguments:JackKate
///optional argument:
参考:
https://cmake.org/cmake/help/v3.22/command/macro.html
https://blog.csdn.net/fengbingchun/article/details/127145153
https://www.csdn.net/tags/MtjacgwsMTA5OTEtYmxvZwO0O0OO0O0O.html