makefile專題:函式定義及呼叫
阿新 • • 發佈:2019-01-25
關鍵詞:makefile中的函式、自定義函式、預定義函式
1. makefile中的函式
- make直譯器提供了一系列的函式供 makefile呼叫(即預定義函式,相當於庫函式)
- 在makefile中支援自定義函式實現,並呼叫執行
- 通過
define
關鍵字實現自定義函式 - 自定義函式的語法
define func1
@echo "My name is $(0)" #$(0)表示取函式名
endef
define func2
@echo "My name is $(0)"
@echo "Param => $(1)"
endef
test :
$(call func1)
$(call func2, jacob)
輸出結果:
$ make test
My name is func1
My name is func2
Param => jacob
2. 深入理解自定義函式
- 自定義函式是一個多行變數,無法直接呼叫
- 自定義函式是一個過程呼叫,沒有任何的返回值
- 自定義函式用於定義命令集合,並應用於規則中
3. make直譯器中的預定義函式
- make的函式提供了處理檔名,變數和命令的函式
- 可以在需要的地方呼叫函式來處理指定的引數
- 預定義函式是有返回值,函式在呼叫的地方被替換為處理結果
- 預定義函式的呼叫語法規則:
.PHONY : test
var := $(abspath ./)
test :
@echo "var => $(var)"
輸出結果:
delphi@delphi-vm:~/code/ch1_make$ make test
var => /home/delphi/code/ch1_make
4.為什麼自定義函式和預定義函式的呼叫形式完全不同?——本質剖析
- makefile中不支援真正意義上的自定義函式
- 自定義函式的本質是多行變數
- 預定義的
call
函式在呼叫時將引數傳遞給多行變數 - 自定義函式是
call
函式的實參,並在call
中被執行
5. 小結
- make直譯器提供了一系列的函式供makefile呼叫
- 自定義函式是一個多行變數,無法直接呼叫
- 自定義函式用於定義命令集合
- 預定義的
call
函式在呼叫時將引數傳遞給多行變數 - 自定義函式是
call
函式的實參,並在call
中被執行
宣告:此文章為本人在學習狄泰軟體學院《十二月提升計劃》所做的筆記,參考書籍《專業嵌入式軟體開發》——李雲,文章中包含狄泰軟體資料內容和《專業嵌入式軟體開發》資料內容,一切版權歸狄泰軟體和《專業嵌入式軟體開發》所有!