makefile学习之路——函数调用

1、深刻自定义函数
bash

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

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

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

.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)

image.png

        运行结果如图所示。
blog

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

        当咱们用var的方式去调用函数时,不会成功的调用函数,缘由就在于,define定义的函数,必需要在规则中经过call才能调用,不然,就只是看成一个变量。
class

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

2、 预约义函数变量

        预约义函数通常须要使用的时候再去查询,这里对预约义函数和自定义函数进行对比
file

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




交流QQ群:199546072

相关文章
相关标签/搜索