【轉】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”類似,展開過程相同。

發佈了68 篇原創文章 · 獲贊 41 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章