make 定義了不少默認變量,像經常使用的命令或者是命令選項之類的,什麼CC啊,CFLAGS啊之類。
$(MAKE)就是預設的 make 這個命令的名稱(或者路徑)。
make -p 能夠查看全部預約義的變量的當前值。編譯
———————————————————————————————————————————————————————————————————————————————變量
在一些大的工程中,咱們會把咱們不一樣模塊或是不一樣功能的源文件放在不一樣的目錄中,咱們能夠在每一個目錄中都書寫一個該目錄的Makefile,這有利於讓咱們的Makefile變得更加地簡潔,而不至於把全部的東西所有寫在一個Makefile中,這樣會很難維護咱們的Makefile,這個技術對於咱們模塊編譯和分段編譯有着很是大的好處。file
例如,咱們有一個子目錄叫subdir,這個目錄下有個Makefile文件,來指明瞭這個目錄下文件的編譯規則。那麼咱們總控的Makefile能夠這樣書寫:引用
subsystem:技術
cd subdir && $(MAKE)di
其等價於:文件
subsystem:make
$(MAKE) -C subdir字符
定義$(MAKE)宏變量的意思是,也許咱們的make須要一些參數,因此定義成一個變量比較利於維護。這兩個例子的意思都是先進入「subdir」目錄,而後執行make命令。參數
咱們把這個Makefile叫作「總控Makefile」,總控Makefile的變量能夠傳遞到下級的Makefile中(若是你顯示的聲明),可是不會覆蓋下層的Makefile中所定義的變量,除非指定了「-e」參數。
———————————————————————————————————————————————————————————————————————————————
Makefile中容許使用簡單的宏指代源文件及其相關編譯信息,在Linux中也稱宏爲變量。在引用宏時只需在變量前加$符號,但值得注意的是,若是變量名的長度超過一個字符,在引用時就必須加圓括號()。