make 通常會在命令執行結束後檢查命令的執行的返回狀態,如果返回成功,那麼就啟動乙個子 shell 來執行下一條命令;
如果在中途檢測到有執行出錯的情況(返回非 0 狀態),那麼就會放棄對當前規則後續命令的執行,甚至會終止所有規則的執行。但在某些情況下,規則中乙個命令執行失敗並不代表整個規則執行錯誤,所以完全可以忽略這條可能執行失敗的命令,其忽略的方法是在命令前新增乙個 '-' 符號。在 makefile 經常看到在 include 面前新增 '-' 符號:-include ,這時噹噹 include 包含的檔案不存在時也不會造成整個 makefile 解析的終止。又如,當一條 rm 命令前新增 『-』 符號時,如果要刪除的檔案不存在或刪除檔案失敗也不會對整個流程有任何影響。
除了 '-' 符號外,還可以看到 '+' 符號,它的意思和 '-' 相反,表示不忽略。這就意味著,像 make 的命令列選項 -n(--just print), -t(touch) 並不影響之前帶 '+' 符號的命令的執行。像 -n 選項,一般情況下,它只是在解析命令,而不真正執行它們,但是命令前使用了 '+' 就後 -n 選項就不能阻止命令被執行。如乙個目錄下有這幾個檔案:
引用$ ls
makefile test2.txt test.txt
makefile 的內容為:?
1
2
3
all:
@
rm
-f
test
.txt
+@
rm
-f test2.txt
使用 -n 選項來執行 make:
引用$ make -n
rm -f test.txt
rm -f test2.txt
再檢查一下當前目錄:
引用$ ls
makefile test.txt
可見 test2.txt 已經被刪除。
**:
Makefile符號 , , , 的區別
makefile中的 號是變數賦值,另外三個是它的拓展應用,具體區別去下 1.簡單的變數賦值,比如 objects program.o foo.o utils.o簡單的使用 號,在 左側是變數,右側是變數的值,右側變數的值可以定義在檔案的任何一處,也就是說,右側中的變數不一定非要是已定義好的值,其也...
makefile 中各種賦值符號的區別
在makefile中我們經常看到 這幾個賦值運算子,那麼他們有什麼區別呢?我們來做個簡單的實驗 新建乙個makefile,內容為 ifdef define vre vre hello world else endif ifeq opt define vre hello world first end...
Make File符號說明
用途define 定義乙個 資料報 是用enddef做結尾,可以包含多行的命令。ifeq ifneq 條件判斷,可以搭配else使用,endif結尾。原型 ifeq arg1,arg2 ifdef ifndef 變數是否定義的條件判斷,可以搭配else使用,endif結尾。原型 ifdef var。...