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 @   小海哥哥de  阅读(479)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示