2012-03-12 18 views
0

質問は、GNU makefileと並行して作ることです。パラレルで同じディレクトリに異なるターゲットを扱う方法

以下のようなフォルダ構造が与えられた場合、make release/debug/cleanをサポートするmakefileを並行して提供することが目標です。

プロジェクトのフォルダ構造:

foo 
    +-foo1 
    +-foo2 
    +-foo3 

メイクのようなかなったことがあります

SUBDIR = foo1 foo2 foo3 
.PHONY $(SUBDIR) release debug clean 
release: $(SUBDIR) 
$(SUBDIR): 
    $(MAKE) -C [email protected] release 

debug: $(SUBDIR) 
#below is incorrect. $(SUBDIR) is overriden. 
$(SUBDIR): 
    $(MAKE) -C [email protected] debug 
.. 

サブディレクトリリストを並列させるためとして偽の目標を設定しています。元のターゲット(リリース、デバッグ、クリーンなど)の情報が失われました。

ディレクトリの名前に接尾辞を付けてコマンドで復元する方法がありますが、それは変です。もう1つの方法は変数を使用することですが、それをどのように実行するかはわかりません。

質問は次のとおりです: 異なるターゲット(リリース/デバッグ/クリーン)で並列作成をサポートするディレクトリのルールを書き込む方法はありますか?

ご意見をいただければ幸いです。

+0

気にしないでください。私は変数を渡すことによってそれを働かせます。デバッグ:\ n \ n $(MAKE)-C $ @ sub_target =デバッグ – maplesfive

答えて

0

コマンドラインでの変数の設定は確実に機能します。 MAKECMDGOALSを使うこともできます(GNU makeのマニュアルを参照してください)。

$(SUBDIR): 
     $(MAKE) -C [email protected] $(MAKECMDGOALS) 
関連する問題