cmake使用教程(八)-macro和function
时间: 2023-07-21 20:20:53 浏览: 98
好的,下面为您介绍 CMake 中的 macro 和 function。
## 1. macro
macro 是一种 CMake 的宏定义机制,可以将一组 CMake 命令封装起来,用一个名字来调用,从而简化 CMakeLists.txt 中的代码量。
macro 的定义格式如下:
```
macro(macro_name [arg1 [arg2 [arg3 ...]])
# command1
# command2
# ...
endmacro()
```
其中,macro_name 是宏的名称,arg1、arg2、arg3...是宏的参数列表,可以有 0 至多个参数。
下面是一个简单的例子,定义了一个名为 print_info 的宏,该宏接受两个参数,分别是 name 和 age,然后输出一条信息:
```
macro(print_info name age)
message("Name: ${name}, Age: ${age}")
endmacro()
print_info("Alice" 18)
```
执行上述代码后,输出结果为:
```
Name: Alice, Age: 18
```
## 2. function
function 与 macro 的作用类似,也是将一组 CMake 命令封装起来,用一个名字来调用,但 function 有明确的返回值。function 的定义格式如下:
```
function(func_name [arg1 [arg2 [arg3 ...]])
# command1
# command2
# ...
return(value)
endfunction()
```
其中,func_name 是函数的名称,arg1、arg2、arg3...是函数的参数列表,可以有 0 至多个参数。value 是函数的返回值。
下面是一个简单的例子,定义了一个名为 add 的函数,该函数接受两个参数,分别是 a 和 b,然后返回它们的和:
```
function(add a b)
set(result ${a}+${b})
return(${result})
endfunction()
set(sum 0)
math(EXPR sum "${sum} + $(add(1 2))")
message("Sum: ${sum}")
```
执行上述代码后,输出结果为:
```
Sum: 3
```
在 function 中,我们使用 set 命令定义了一个变量 result,然后用 return 返回了这个变量的值。在调用 add 函数时,我们使用了 $() 将函数调用结果作为表达式的一部分,然后再用 math 命令计算出 sum 的值。
以上就是 CMake 中 macro 和 function 的介绍,希望对您有所帮助。