1. 程式人生 > >【轉】Makefile中的$(error)和$(warning)

【轉】Makefile中的$(error)和$(warning)

摘自《GNU+Makefile中文手冊》整理翻譯:徐海兵

Makefile中的$(error)和$(warning)

make 提供了兩個控制 make 執行方式的函式。通常它們用在 Makefile 中,當 make執行過程中檢測到某些錯誤是為使用者提供訊息,並且可以控制 make 過程是否繼續。

$(error TEXT…)

函式功能: 產生致命錯誤,並提示“ TEXT…”資訊給使用者,並退出 make 的執行。

需要說明的是:
“error”函式是在函式展開式(函式被呼叫時)才提示資訊並結束 make程序。
因此如果函數出現在命令中或者一個遞迴的變數定義中時,在讀取 Makefile 時不會出現錯誤。
而只有包含“error
”函式引用的命令被執行,或者定義中引用此函式的遞迴變數被展開時,才會提示致命資訊“TEXT…”同時退出 make。

返回值: 空

函式說明:“error”函式一般不出現在直接展開式的變數定義中,否則在make讀取Makefile時將會提示致命錯誤。關於遞迴展開和直接展開可參考 5.2 兩種變數定義 一節

假設我們的 Makefile 中包含以下兩個片斷;
示例 1:

ifdef ERROR1
$(error error is $(ERROR1))
endif

make讀取解析Makefile時,如果只起那已經定義變數“ EROOR1”, make將會提示致命錯誤資訊“ $(ERROR1)”並退出。關於“ ifdef”可參考 7.2.1.3 關鍵字“ ifdef” 一小節。
示例 2:

ERR = $(error found an error!)
.PHONY: err
err: ; $(ERR)

這個例子,在 make 讀取 Makefile 時不會出現致命錯誤。只有目標“ err”被作為一個目標被執行時才會出現。

$(warning TEXT…)

函式功能: 函式“ warning”類似於函式“ error”,區別在於它不會導致致命錯誤( make 不退出),而只是提示“ TEXT…”, make 的執行過程繼續。

返回值: 空

函式說明: 用法和“ error”類似,展開過程相同。