2013-03-07 43 views
1

我有一個Makefile遍歷目錄列表,工作正常,但是我想得到像下面的Entering/Leaving信息消息:停止化妝呼應目錄進入/退出

make[1]: Leaving directory `/home/zzz/aaa/bbb/ccc' 

的代碼,不會遍歷位(其中cccSUBDIRS列表顯示目錄之一,Makefilebbb DIR)是在這裏:

@for i in $(SUBDIRS); do \ 
(cd $$i; make [email protected]); \ 
done 

我猜一些需要做(cd $$i; make [email protected])部分,但不知道什麼。

由於使用

+1

'make --no-print-directory'會執行此操作。哦,*請在遞歸調用make時使用'$ {MAKE}'。 – bobbogo 2013-03-07 19:21:52

回答

1

GNU使得決定是否根據MAKELEVEL打印這樣的信息:如果它被設置和> 0,則它打印信息。你可以設置或僞造一個零MAKELEVEL,所以GNU make認爲它是最初的調用。

@for i in $(SUBDIRS); do \ 
    (cd $$i; unset MAKELEVEL; make [email protected]); \ 
done 

應該做的伎倆。

另一方面,遞歸使認爲有害(谷歌它)。如果可以的話,避免它。

編輯:正如bobbogo指出的,有一個GNU make選項--no-print-directory;這比我上面的黑客好得多。

+0

這樣做伎倆謝謝。 Re遞歸make,是make make調用make,但是在每個dir中有不同的makefile,我認爲這種風格是無害的。完全同意它是否在相同的Makefile上調用make。 – NWS 2013-03-07 14:33:08