Makefile符號 , , , 的區別

2021-10-02 05:53:06 字數 898 閱讀 9697

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。...