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/