溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Makefile---變量

發(fā)布時間:2020-07-29 23:10:32 來源:網(wǎng)絡(luò) 閱讀:232 作者:qq5cf789c7325b8 欄目:編程語言

變量定義
符號?
說明?
參考?

? ? ? ? ? $() 或 ${}? ? ? ? ? ??

使用變量。如果要使用字符$,需寫為$$。SRC = main.c

gcc? -c? $(SRC)? -o? main

=一般變量賦值
:=?變量只能使用前面已經(jīng)定義的變量。

SRC? =? main.c

OBJ? :=? $(SRC) $(INC) test.c

INC? ? =? test1.c

#此時$(OBJ)的值為main.c test.c? ? ? ? ? ? ? ??

?=如果變量沒有被定義過,則賦值。否則跳過該語句。? ? ? ? ? ? ??

① SRC ?= main.c

#此時$(SRC)的值為main.c

② SRC? ? =? test.c

? ? ?SRC? ?=? main.c

#此時$(SRC)的值為test.c

? ?

變量定義

符號 說明 參考 $() 或

${} 使用變量。如果要使用字符$,需寫為$$。

SRC = main.c

gcc? -c? $(SRC)? -o? main

= 一般變量賦值 := 變量只能使用前面已經(jīng)定義的變量。

SRC? =? main.c

OBJ? :=? $(SRC) $(INC) test.c

INC? ? =? test1.c

#此時$(OBJ)的值為main.c test.c

?= 如果變量沒有被定義過,則賦值。否則跳過該語句。

① SRC ?= main.c

#此時$(SRC)的值為main.c

② SRC? ? =? test.c

? ? ?SRC? ?=? main.c

#此時$(SRC)的值為test.c

變量的高級用法

表達(dá) 說明 參考 $(var:a=b)

將變量var中所有字符串 a 結(jié)尾的替換成字符串 b。

這里結(jié)尾的標(biāo)志是 空格 或者 結(jié)束符

SRC = test1.c? test2.c? test3.c

OBJ = $(SRC:.c=.o)

#此時$(OBJ)值為 test1.o? test2.o? test3.o

x = y

y = z

a := $($(x))

將變量的值當(dāng)作變量

x = $(y)
y = z
z = Hello
a := $($(x))

#此時 $(a) 值為 Hello,一層一層解開即可

Makefile自動化變量

符號 說明 參考 $@

1、規(guī)則中的目標(biāo)文件集合。

2、在模式規(guī)則中,如果有多個目標(biāo),$@為目標(biāo)中模式定義的集合

target : obj

? ? @echo $@ #輸出target

gcc -o target obj

$? 所有比目標(biāo)新的依賴目標(biāo)的集合。

#obj1.c被修改

target : obj1 obj2 obj2 obj3

? ? @echo $? #輸出obj1

? ? @echo $^ #輸出obj1 obj2 obj3

? ? @echo $+ #輸出obj1 obj2 obj2 obj3

gcc -o target obj1 obj2 obj3

$^ 所有依賴目標(biāo)的集合。會自動去除重復(fù)的依賴目標(biāo)。 $+ 所有依賴目標(biāo)的集合。不會去除重復(fù)的依賴目標(biāo)。

$<

1、規(guī)則的第一個依賴文件名。

2、如果是一個目標(biāo)文件使用隱含規(guī)則來重建,則它代表由隱含規(guī)則加入的第一個依賴文件。

? $%

1、當(dāng)規(guī)則的目標(biāo)文件是一個靜態(tài)庫文件時,代表靜態(tài)庫的一個成員名。

2、如果目標(biāo)不是靜態(tài)庫文件,其值為空。

? $ * 在模式規(guī)則和靜態(tài)模式規(guī)則中,代表“莖”。莖”是目標(biāo)模式中“%”所代表的
部分。 ?


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI