,,,,,,,,在makefile中是支持函数的概念的,使解释器提供了一系列的函数供makefile调用. .下面是自定义函数的语法
,,,,,,,,我们再来深入地看看自定义函数,下。来我们还是以代码为例来进行说明
.PHONY :测试 define func1 ,,,@echo “My name is $ (0)“; endef define func2 ,,,@echo “My name is $ (0)“; ,,,@echo “Param 1,=祝辞,(1)“美元; ,,,@echo “Param 2,=祝辞,(2)“美元; endef var :=, $ (call func1) new :=, $ (func1) test : ,,,@echo “new =祝辞,美元(新)”; ,,,@echo “var =祝辞,美元(var)“; ,,,(美元call func1), # @echo My name is func1 ,,,$ (call func2, D.T.Software,, delphi_tang)
,,,,,,,,我们来看看编译结果
,,,,,,,我们看到新变量只打印了前面的,并么有打印func1,因为自定义函数其本质是过程调用,没有任何的返回值;而var前面加了电话,因此它会输出函数名func1。在直接进行调用func1时,打印便是定义的字符串,它的参数0是函数名,叫func2时,加了两个参数,因此参数1为D.T.软件,参数2为delphi_tang下。来我们来看看预定义函数的调,用格式如下
,,,,,,,,那么自定义函数和预定义函数的调用形式为何完全不同呢?我们来分析下makefile中的预定义函数,。
,,,,,,,,下来我们还是以代码为例来进行说明
.PHONY :测试 define func1 ,,,@echo “My name is $ (0)“; endef define func2 ,,,@echo “My name is $ (0)“; endef var1 :=, $ (call func1) var2 :=, $ (call func2) var3 :=,美元(abspath /)。 var4 :=, $ (abspath test.cpp) test : ,,,@echo “var1 =祝辞,美元(var1)“; ,,,@echo “var2 =祝辞,美元(var2)“; ,,,@echo “var3 =祝辞,美元(var3)“; ,,,@echo “var4 =祝辞,美元(var4)“
,,,,,,,,程序中的abspath是输出当前目录的绝对路径,我们来看看结果
,,,,,,,,我们看到var1和var2定义的分别是个自定义函数,因此输出函数名;而var3是输出当前目录的绝对路径,var4是输出当前目录下的测试。cpp路径。结果也正是这样的。通过对makefile中的函数定义及调用的学习,总结如下:
,,,,,,,,