make提供了兩個控制make運行方式的函數。通常它們用在Makefile中,當make執行過程中檢測到某些錯誤是為用戶提供消息,並且可以控制make過程是否繼續。
1 $(error TEXT…)
* 函數功能:產生致命錯誤,並提示“TEXT…”信息給用戶,並退出make的執行。需要說明的是:“error”函數是在函數展開式(函數被調用時)才提示信息並結束make進程。因此如果函數出現在命令中或者一個遞歸的變數定義中時,在讀取Makefile時不會出現錯誤。而只有包含“error”函數引用的命令被執行,或者定義中引用此函數的遞歸變數被展開時,才會提示致命信息“TEXT…”同時退出make。
* 返回值:空
* 函數說明:“error”函數一般不出現在直接展開式的變數定義中,否則在make讀取Makefile時將會提示致命錯誤。
假設我們的Makefile中包含以下兩個片斷;
示例1:
ifdef ERROR1
$(error error is $(ERROR1))
endif
make讀取解析Makefile時,如果只起那已經定義變數“EROOR1”,make將會提示致命錯誤信息“$(ERROR1)”並退出。
示例2:
ERR = $(error found an error!)
.PHONY: err
err: ; $(ERR)
這個例子,在make讀取Makefile時不會出現致命錯誤。只有目標“err”被作為一個目標被執行時才會出現。
2 $(warning TEXT…)
* 函數功能:函數“warning”類似於函數“error”,區別在於它不會導致致命錯誤(make不退出),而只是提示“TEXT…”,make的執行過程繼續。
* 返回值:空
* 函數說明:用法和“error”類似,展開過程相同。
[火星人 ] make的控制函數已經有306次圍觀