2016-08-23 6 views
0

私はツールfooを持っており、1つ以上の入力を受け取り、対応する出力を生成できます。例えば、foo a.inは、a.outおよびfoo a.in b.inを生成し、a.outおよびb.outを生成します。 a.outa.inにのみ依存し、b.outb.inにのみ依存します。GNU Makefileは、単一のレシピ実行を使用して複数の前提条件から複数のターゲットを生成します。

ツールは、単一の入力上で実行することができますが、私が個別に各outファイルを生成するために

%.out: %.in 
    foo $? 

をルールを使用することができますが、私はバッチしたいと思いますので、複数の入力を使用して実行する方が効率的ですそれらをfooへの単一の呼び出しに変換します。

パターンルールでは、私はレシピの単一の実行を使用して複数のターゲットを生成することができます。

a%out b%out: a%in b%in 
    foo $? 

しかし、a.outは現在、不必要に不必要になりましたb.inb.outに依存a.inに依存します。前提条件とターゲット間のみ1対1の依存関係があるとき、私は、単一のレシピ実行を使用して、複数の入力から複数のターゲットを生成することができますどのように

stamp: a.in b.in a.out b.out 
    cat 

答えて

0

.INTERMEDIATEステージングファイルとタイムスタンプファイルは、この

.INTERMEDIATE: list 

stamp: list 
    foo `cat list` 
    touch stamp 

list: a.out b.out a.in b.in 
    @: 

%out: %in 
    echo $? >> list 
を行うことができます
関連する問題