Makefile學習1
1、Makefile的命令列中前面的@表示靜默執行。
2、Makefilezhon中預設情況下是先將這一行命令打印出來,然後在執行這條命令。
3、不列印命令,直接執行命令,在命令前加@
4、Makefile中幾種變數賦值運算子
(1)=
最簡單的賦值
(2):=
一般也是賦值
用=賦值的變數,在被解析是他在Makefile中取決於最後一次賦值時的值,用:=賦值是不隨最後Makefile的值的變化,只看前面的值即可。
例:
VAR_A=abcd
VAR_B=$(VAR_A)
VAR_C:=$(VAR_A)
VAR_A=efgh
此時$(VAR_B)為efgh隨VAR_A變化
$(VAR_C)為abcd不隨VAR_A變化
(3)?=
如果變數前面沒有賦值過則執行這條語句,如果前面已經賦值過了則本行被忽略。(實驗可以看出:所謂的沒有賦值過就是這個變數沒有被定義過。才會執行這條命令)
(4)+=
用來給一個已經賦值的變數連續賦值,意思就是可以把Makefile中的變數看成一個字串,+=後面的字串接續到之前的字串。
注意:Makefile中並不要求賦值運算子兩邊一定要有空格或者無空格,這個比shell的格式要求鬆一些。
5、Makefile的環境變數
(1)makefile中用export匯出的就是環境變數。一般情況下要求環境變數名用大寫,普通變數名用小寫。
(2)環境變數和普通變數不同,可以理解為:環境變數是整個工程中所有的Makefile中可以共同使用的全域性變數,而普通
變數只是當前本Makefile中使用的區域性變數。所有要注意:定義了一個環境變數,會影響其他Makefile檔案。
(3)Makefile中可能有一些環境變數是makefile本身自己定義的內部的環境變數。這就好像是C語言中編譯器預定義的巨集__LINE__ __FUNCTION__等一樣。