1

ディレクトリのリストをトラバースするがありますが、これは正常に動作しますが、以下のような/ info メッセージを取得しMakefileたくありません。EnteringLeaving

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

トラバーサルを行うコードのビット (はリスト内のディレクトリcccの 1 つであり、ディレクトリ内にあります) は次のとおりです。SUBDIRSMakefilebbb

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

I am guessing something needs doing with the (cd $$i; make $@) part, but cannot figure out what.

Thanks

4

2 に答える 2

1

GNU makes decides whether to print this information according to the MAKELEVEL: if it is set and > 0 then it prints the info. You can unset or fake a zero MAKELEVEL, so GNU make thinks it is the initial invokation.

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

should do the trick.

On the other hand, Recursive make considered harmful (google it). If you can, avoid it.

EDIT: As bobbogo points out, there is a GNU make option --no-print-directory; this is much better than my hack above.

于 2013-03-07T14:21:40.560 に答える
0

「for」ループの代わりに include を使用してみてください。

http://www.gnu.org/software/make/manual/html_node/Include.html

于 2013-03-07T14:09:52.540 に答える