2017-06-30 37 views
0

我有一個包含多個子目錄的項目,主Makefile需要能夠構建/清除一些子目錄 - 子目錄的確切名稱在變量中傳遞(DIRS in例子):GNU Make無法從循環中輸入子目錄

​​3210

既然我已經在使用的目錄名稱作爲構建目標,我想用一個循環清洗每個子目錄。但我得到以下錯誤:

$ make clean 
# ... Clean this directory ... 
cd dir1 && make clean; cd dir2 && make clean; 
make[1]: Entering directory `/home/ex/clean_try/dir1' 
rm -fr *.o 
make[1]: Leaving directory `/home/ex/clean_try/dir1' 
/bin/sh: 1: cd: can't cd to dir2 
make: *** [clean] Error 2 

它似乎已經離開dir1,它怎麼不能從主目錄進入dir2?

回答

2

cd dir2是剛剛完成cd dir1 ---而且dir2不是dir1的子目錄,對不對? :-)

嘗試:make -C $d clean

HTH

+0

OK,該訣竅。但是......它是怎麼說的:在錯誤之前離開目錄'/ home/ex/clean_try/dir1'?這是令人費解的,至少可以說... – TKKS

+0

這是正常的make-in-make行爲。用'--no-print-directory'抑制 – Mischa