makefile中的「=」號是變數賦值,另外三個是它的拓展應用,具體區別去下:
1.「=」
簡單的變數賦值,比如:
objects = program.o foo.o utils.o
簡單的使用「=」號,在「=」左側是變數,右側是變數的值,右側變數的值可以定義在檔案的任何一處,也就是說,右側中的變數不一定非要是已定義好的值,其也可以使用後面定義的值
foo = $(bar)
bar = $(ugh)
ugh = huh?
all:
echo $(foo)
執行「make all」將會打出變數$ (foo)的值是「huh?」($ (foo)的值是$ (bar),$ (bar)的值是$ (ugh),$ (ugh)的值是「huh?」)可見,變數是可以使用後面的變數來定義的
2.「:=」
與「=」的區別:前面的變數不能使用後面的變數,只能使用前面已定義好了的變數
3.「?=」
如果變數沒被定義過,則定義變數,否則則什麼都不做,比如:
foo ?= bar
等價於
ifeq (
$(origin foo)
, undefined)
foo = bar
endif
4.「+=」
追加變數的值,比如:
objects = main.o foo.o bar.o utils.o
objects += another.o
$(objects)值變成:「main.o foo.o bar.o utils.o another.o」(another.o被追加進去了) makefile 中各種賦值符號的區別
在makefile中我們經常看到 這幾個賦值運算子,那麼他們有什麼區別呢?我們來做個簡單的實驗 新建乙個makefile,內容為 ifdef define vre vre hello world else endif ifeq opt define vre hello world first end...
Makefile中的 符號
make 通常會在命令執行結束後檢查命令的執行的返回狀態,如果返回成功,那麼就啟動乙個子 shell 來執行下一條命令 如果在中途檢測到有執行出錯的情況 返回非 0 狀態 那麼就會放棄對當前規則後續命令的執行,甚至會終止所有規則的執行。但在某些情況下,規則中乙個命令執行失敗並不代表整個規則執行錯誤,...
Make File符號說明
用途define 定義乙個 資料報 是用enddef做結尾,可以包含多行的命令。ifeq ifneq 條件判斷,可以搭配else使用,endif結尾。原型 ifeq arg1,arg2 ifdef ifndef 變數是否定義的條件判斷,可以搭配else使用,endif結尾。原型 ifdef var。...