停止进入/退出的回显目录

时间:2013-03-07 14:05:35

标签: makefile gnu-make

我有Makefile遍历目录列表,工作正常,但我想获取Entering / Leaving信息消息下面:

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

执行遍历的代码位(其中cccSUBDIRS列表中的dirs之一且Makefile位于bbb目录中)在此处:

@for i in $(SUBDIRS); do \
(cd $$i; make $@); \
done

我猜测需要对(cd $$i; make $@)部分做些什么,但无法弄清楚是什么。

由于

2 个答案:

答案 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