makefile使用筆記(二)變量

By francis_hao    Oct 30,2017 html

 

makefile中可使用變量,變量有多種類型,下面分別介紹 spa

簡單變量

簡單變量的命名規則和c語言一致。 .net

給變量賦值就表示建立了這個變量,使用變量時需使用$()或${}這樣的形式。 htm

變量的賦值有幾種不一樣的形式 blog

=繼承

遞歸擴展的變量賦值,僅當在變量被使用的時候纔去擴展。變量能夠先使用後賦值 遞歸

例如: ci

a=$(b) get

b=$(c) 自動化

c=d

在一系列的賦值事後,a的值就是$(b)。

只有在使用a的時候,纔會一步步的擴展a=$(b)=$(c)=d

:=

簡單擴展的變量賦值,變量當即擴展,變量須要先賦值再使用

例如:

a=$(b)

b=$(c)

c=d

在一系列的賦值事後,a的值是'',也就是空。由於在執行a=$(b)的時候,就要當即擴展,而此時b尚未被賦值,也就是空的。

?=

若是變量以前沒有被定義,則執行賦值操做,不然什麼也不作

+=

追加變量值

若是變量以前沒有被定義過,那麼+=自動變成=。

若是變量以前有過賦值操做,就進行追加賦值,賦值屬性繼承以前的賦值操做(=/:=)

 

 

自動化變量

自動化變量是指符合某一規則或模式的值

$@

表示規則中的目標

$<

依賴目標中的第一個目標文件??

$?

全部比目標新的依賴,以空格分隔

$^

全部的依賴目標的集合,以空格分隔,如有重複只保留一份。

$+

全部的依賴目標的集合,以空格分隔,不去除重複的

$*

表示目標模式中%及其之前的部分,abcd.v -> %.v ->abcd

make能夠識別一些常見的後綴名,好比hello.o對應的$*就是hello

 

 


本文由 劉英皓 創做,採用 知識共享 署名-非商業性使用-相同方式共享 3.0 中國大陸 許可協議進行許可。歡迎轉載,請註明出處:
轉載自:http://www.cnblogs.com/yinghao1991/p/7757822.html

 

 

參考

【1】 跟我一塊兒寫Makefile 陳皓 http://blog.csdn.net/haoel/article/details/2886/

相關文章
相關標籤/搜索