我有Makefile
遍历目录列表,工作正常,但我想不获取Entering
/ Leaving
信息消息下面:
make[1]: Leaving directory `/home/zzz/aaa/bbb/ccc'
执行遍历的代码位(其中ccc
是SUBDIRS
列表中的dirs之一且Makefile
位于bbb
目录中)在此处:
@for i in $(SUBDIRS); do \
(cd $$i; make $@); \
done
我猜测需要对(cd $$i; make $@)
部分做些什么,但无法弄清楚是什么。
由于
答案 0 :(得分:1)
GNU决定是否根据MAKELEVEL
打印此信息:如果已设置且> 0然后它打印信息。您可以取消设置或伪造零MAKELEVEL
,因此GNU make认为这是最初的调用。
@for i in $(SUBDIRS); do \
(cd $$i; unset MAKELEVEL; make $@); \
done
应该这样做。
另一方面,递归认为有害(google it)。如果可以,请避免使用它。
编辑:正如bobbogo指出的那样,有一个GNU make选项--no-print-directory
;这比我上面的黑客要好得多。
答案 1 :(得分:0)
尝试使用include而不是“for”循环:
http://www.gnu.org/software/make/manual/html_node/Include.html