1. 程式人生 > >makefile學習之路——函數調用

makefile學習之路——函數調用

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學習之路——函數調用