2012-01-22 9 views
0

まず、私は再帰的なMakefilesを使うことの問題を認識していると言いましょう。だから、あなたがここにいたら私はそれを使わないと言っているだけで、しないでください。Makefileでは、 - no-print-directoryが設定されているときに、サブディレクトリで--print-directoryを再度有効にする方法は?

は、このディレクトリ構造を想像してみて:

rootdir 
`-- subdir 
    |-- a 
    |-- b 
    `-- c 

のは、rootdirにMakefileを言ってみましょうは、次のように読み取ります

.PHONY: all 
all: 
    # build some stuff 
    $(MAKE) -C subdir 

subdirの1は次のように読み取ります

.PHONY: all 
all: 
    # nothing here except redirecting make to each of the subdirectories 
    $(MAKE) -C a 
    $(MAKE) -C b 
    $(MAKE) -C c 

との別のMakefile、bcフォルダがあります。

subdirのMakefileはmakeをリダイレクトする以外には何の役にも立たないので、出力しないようにしてください。Entering directory rootdir/subdirLeaving directory rootdir/subdirは少し出力をクリーンアップします。一方

サブフォルダabcで実行中のコマンドがあるので、私はは、これらの出力を印刷するために作りたいです。ここで私は仕事だろうと思ったものです:

rootdirさんのMakefile:

.PHONY: all 
all: 
    # build some stuff 
    $(MAKE) --no-print-directory -C subdir 

subdirさんのMakefile:

.PHONY: all 
all: 
    # nothing here except redirecting make to each of the subdirectories 
    $(MAKE) --print-directory -C a 
    $(MAKE) --print-directory -C b 
    $(MAKE) --print-directory -C c 

--no-print-directoryを呼び出すときには、のために作るにするために与えられた後に問題があり、 subdir--print-directoryは、abまたはcのmakeを呼び出すときに再び有効になりません。

親のmakeがそれを無効にしたときにディレクトリを印刷するにはどうすればいいですか?

答えて

1

コマンドラインフラグをMAKEFLAGS variableでサブメイクに伝えるようにします。手動でサブになり呼び出す前にwMAKEFLAGSから(もしあれば)--no-print-directoryを交換したいことがあります。

${MAKE} MAKEFLAGS="$(subst --no-print-directory,w,${MAKEFLAGS})" -C ... 
+0

それは感謝、働いていました。私は何かクリーンなことを望んでいましたが! – Shahbaz

関連する問題