1.變量的引用方式:
”$(變量名)“或者”¥{變量名}“
例如:
${Objs}就是取變量Objs的值
注意:
當變量名為單字符是可以采用:“$a”的方式引用,多字符則不行
2.變量定義的兩種方法,即對變量進行賦值:
(1)使用遞歸展開式變量“=” 左側為變量名,右側是變量的值,該方法的優點是右側變量的值可以定義在文件的任何一處,也就是說,右側中的變量不一定非要是已定義好的值,其也可以使用后 面定義的值。
(2)使用直接展開式變量“:=” 使用“:=”定義變量時,變量值中對其他量或者函數的引用在定義變量時被展開(對變量進行替換)。所以變量被定義后就是一個實際需要的文本串,其中不再包含任何變量的引用。這種方法,前面的變量不能使用后面的變量,只能使用前面已定義好了的變量
3.“?=”操作符
“?=”被稱為條件賦值的賦值操作符:只有此變量在之前沒有賦值的情況下才會對這個變量進行賦值
4.環境變量
(1)系統環境變量可帶入到執行make的Makefile文件中,但是如果make命令行加入變量或者是該變量已經在Makefile文件中定義,則系統環境變量將會被覆蓋,如果make指定了“-e”參數,那么,系統環境變量將覆蓋Makefile中定義的變量
(2)如果我們在環境變量中設置了“CFLAGS”環境變量,那么我們就可以在所有的Makefile中使用這個變量了。這對於我們使用統一的編譯參數有比較大的好處。如果Makefile中定義了CFLAGS,那么則會使用Makefile中的這個變量,如果沒有定義則使用系統環境變量的值
(3)環境變量的傳遞使用,當make遞歸調用時,上層Makefile中定義的變量會以系統環境變量的方式傳遞到下層的Makefile中。當然,默認情況下,只有通過命令行設置的變量會被傳遞。而定義在文件中的變量,如果要向下層 Makefile傳遞,則需要使用exprot關鍵字來聲明。