1、自定义函数
makefile中11可以自定义实现函数,并调用执行。通过 define 关键字实现自定义函数。
注意:
1、自定义函数是一个多行变量,无法直接调用
2、自定义函数是一种过程调用,并没有任何的返回值
3、自定义函数用于定义命令集合,并应用于规则中
使用 new 变量时相当于使用变量,没有传参进去。
使用 var 变量时 使用 call 相当于把 func1 作为参数传进去。
2、预定义函数
make 解释器提供了处理文件名、变量和命令的函数。
可以在需要的地方调用函数来处理指定的参数
函数在调用的地方被替换为处理结果
预定义函数的使用
var := $(func_name arg1, arg2, ...)
var表返回值
func_name表函数名
arg1,arg2,...表函数实参
例子:var := $(abspath ./)
表示求当前文件的绝对路径。
为什么自定义函数与预定义函数的调用形式完全不同?
1、makefile 中不支持真正意义上的自定义函数
2、自定义函数的本质是多行变量
3、预定义函数的 call 函数在调用时将参数传递给多行变量
4、自定义函数是 call 函数的实参,并在 call 中被执行