1. 程式人生 > >Makefile學習1

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__等一樣。