makefile学习之路——函数调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了makefile学习之路——函数调用相关的知识,希望对你有一定的参考价值。

一、深入自定义函数

        1、 自定义函数是一个多行变量,无法直接调用

        2、 自定义函数是一个过程调用,没有任何的返回值

        3、 自定义函数用于定义命令集合,并应用于规则中

.PHONY : test

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 => $(new)"
	@echo "var => $(var)"
	$(call func1)                  #@echo My name is func1
	$(call func2, Study, Makefile)

技术分享图片

        运行结果如图所示。

        通常,调用自定义的方法是在规则中,$(call funcname),这种方式调用。

        当我们用var的方式去调用函数时,不会成功的调用函数,原因就在于,define定义的函数,必须要在规则中通过call才能调用,否则,就只是当作一个变量。

        从new的使用来看,call的作用,就是将相应的位置换成实参。

二、 预定义函数

        预定义函数一般需要使用的时候再去查询,这里对预定义函数和自定义函数进行对比

       在makefile中不支持真正意义上的函数,因为自定义函数只是一个多行变量;预定义的call函数在调用时,将参数传递给多行变量;自定义函数是call函数的实参,并在call中被执行。








以上是关于makefile学习之路——函数调用的主要内容,如果未能解决你的问题,请参考以下文章

Makefile学习之路5——通过函数增强功能

makefile学习之路——makefile简介

makefile学习之路——伪目标

makefile学习之路——变量

Makefile学习之路——4

Python学习之路6 - 装饰器