1.make的遞歸過程指的是:
在Makefile中使用“make”作為一個命令來執行本身或者其它makefile文件的過程。
2.遞歸的意義:
當前目錄下存在一個“subdir”子目錄,在這個子目錄中有描述此目錄編譯規則的makefile文件,在執行make時需要從上層目錄(當前目錄)開始並完成它所有子目錄的編 譯。那么在當前目錄下可以使用這樣一個規則來實現對這個子目錄的編譯。
3.用法舉例:
我們有一個子目錄叫subdir,這個目錄下有個Makefile文件,來指明了這個目錄下文件的編譯規則。那么我們總控的Makefile可以這樣書寫:
subsystem:
cd subdir && $(MAKE)
其等價於:
subsystem:
$(MAKE) -C subdir
對這兩個規則的命令進行簡單說明,規則中“$(MAKE)”是對變量“MAKE”的引用(變量“MAKE”的值指向make可執行文件,一般為/usr/bin/make)。第一個規則命令的意思是:進入子目錄,然后在子目錄下執行make。第二個規則使用了make的“-C”選項,同樣是首先進入子目錄而后再執行make。
第二個規則的命令意思即為“cd subdir && usr/bin/make”
這兩個例子的意思都是先進入“subdir”目錄,然后執行make命令。
我們把這個Makefile叫做“總控Makefile”,總控Makefile的變量可以傳遞到下級的Makefile中(如果你顯示的聲明),但是不會覆蓋下層的Makefile中所定義的變量,除非指定了“-e”參數。
4.make遞歸時關於變量的傳遞
如果你要傳遞變量到下級Makefile中,那么你可以使用這樣的聲明:
export ;
如果你不想讓某些變量傳遞到下級Makefile中,那么你可以這樣聲明:
unexport ;
如:
示例一:
export variable = value
其等價於:
variable = value
export variable
其等價於:
export variable := value
其等價於:
variable := value
export variable