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)
運行結果如圖所示。
blog
一般,調用自定義的方法是在規則中,$(call funcname),這種方式調用。
it
當咱們用var的方式去調用函數時,不會成功的調用函數,緣由就在於,define定義的函數,必需要在規則中經過call才能調用,不然,就只是看成一個變量。
class
從new的使用來看,call的做用,就是將相應的位置換成實參。
test
2、 預約義函數變量
預約義函數通常須要使用的時候再去查詢,這裏對預約義函數和自定義函數進行對比
file
在makefile中不支持真正意義上的函數,由於自定義函數只是一個多行變量;預約義的call函數在調用時,將參數傳遞給多行變量;自定義函數是call函數的實參,並在call中被執行。
交流QQ羣:199546072