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

相關文章
相關標籤/搜索