次のものがあるとします。
myfile.xyz: myfile.abc
mycommand
.SUFFIXES:
.SUFFIXES: .xyz .abc
.abc.xyz:
flip -e abc "$<" > "logs/$*.log"
ここmycommand
で、(現在のように) カスタム ルールを作成し、後 (または前)にサフィックス ルールを実行したいとします。つまり、カスタム ルールでサフィックス ルールを置き換えたくありません。
あなたがやりたいことは、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 マニュアルを参照してください。