009.CMake函数和宏(上)


就像它们在其他编程语言中的角色一样,函数和宏是开发人员扩展CMake功能、封装重复任务的主要机制。它允许开发人员定义可重用的CMake代码块,这些代码块可以像常规的内置CMake命令一样调用。它们也是CMake自己模块系统的基石(后文再说)。

基础

函数和宏与C++非常相似,函数引入了一个新的作用域,函数参数成为函数体中可访问的变量。而宏则是文本替换,宏参数被替换为对应的字符串。命令格式如下:

function(name [arg1 [arg2 [...]]])
# Function body (i.e. commands) ...
endfunction()
macro(name [arg1 [arg2 [...]]])
# Macro body (i.e. commands) ...
endmacro()

函数或宏的调用方式与任何其他CMake命令完全相同,然后在调用点执行函数或宏的主体。例如:

function(print_me)
	message("Hello from inside a function")
	message("All done")
endfunction()
# Called like so:
print_me()

如上所示,name参数定义了用于调用函数或宏的名称,它应该只包含字母、数字和下划线。名称不区分大小写,但为了风格一致,建议名字小写,因为CMake自己的命令遵循的约定是命令名小写,单词之间用下划线分隔。CMake的早期版本要求名称作为endfunction()或endmacro()的括号里要重复参数,但现在已经没必要了。(这点和if()endif()类似。)

参数的使用

函数和宏的参数处理基本相同,只有一个非常重要的区别。对于函数,每个参数都是一个CMake变量,并且具有CMake变量的所有常规行为。例如,它们可以在**if()**语句中作为变量进行测试。相比之下,宏参数是字符串替换,因此用作宏调用参数的内容基本上粘贴到宏体中参数出现的任何位置。如果在If()语句中使用宏参数,则会将其视为字符串而不是变量。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温铜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值