1

次のものがあるとします。

myfile.xyz: myfile.abc
        mycommand

.SUFFIXES:
.SUFFIXES: .xyz .abc

.abc.xyz:
        flip -e abc "$<" > "logs/$*.log"

ここmycommandで、(現在のように) カスタム ルールを作成し、後 (または前)サフィックス ルールを実行したいとします。つまり、カスタム ルールでサフィックス ルールを置き換えたくありません。

4

1 に答える 1

2

あなたがやりたいことは、gnu makeでは不可能です。1 つのターゲットに対して複数のレシピを許可する二重コロン ルールがありますが、サフィックス ルールまたはパターン ルールでは機能しません。詳細については、ダブル コロン規則に関する make マニュアルを参照してください。

回避策は次のとおりです。

.SUFFIXES:           # Delete the default suffixes
.SUFFIXES: .xyz .abc # Define our suffix list

.abc.xyz: 
        flip -e abc "$<" > "logs/$*.log"
        if [ myfile.abc = "$<" ]; then mycommand; fi

そして、サフィックス ルールの代わりにパターン ルールを使用した同じ makefile を次に示します。

%.xyz: %.abc
        flip -e abc "$<" > "logs/$*.log"
        if [ myfile.abc = "$<" ]; then mycommand; fi

詳細については、パターン ルール昔ながらのサフィックス ルールに関する make マニュアルを参照してください。

于 2013-08-27T21:23:11.070 に答える