CMakeList之macro

一、定义

1、可以把它理解为C++的宏,命令如下

macro(<name> [<arg1> ...])
  <commands>
endmacro()

定义一个名为的宏,它接受名为,…等一系列的参数。macro与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

posted @ 2022-10-26 19:46  小海哥哥de  阅读(419)  评论(0编辑  收藏  举报