makefile學習之路——函數調用
阿新 • • 發佈:2018-03-31
makefile call 函數 一、深入自定義函數
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學習之路——函數調用