複数のターゲットに同一のレシピを適用する Makefile

作成

同じレシピを複数書きたくない

次のように、それぞれ異なる prerequisites を持つ複数の targets に対して同一の recipe を実行したいときに、その recipe を複数回記述するのは避けたいところです。

target_A : $(prerequisites_for_A)
    some_common_recipe

target_B : $(prerequisites_for_B)
    some_common_recipe

target_C : $(prerequisites_for_C)
    some_common_recipe

複数回書かなくてよいやり方

上の例は次のように書き換えることができ、同一の recipe を複数回書かなくて済みます。

target_A : $(prerequisites_for_A)
target_B : $(prerequisites_for_B)
target_C : $(prerequisites_for_C)

target_A target_B target_C :
    some_common_recipe

また、次のような書き方でも、 $^ で prerequisites を参照することができます。

file1 file2 file3 :
    cat $^ > $@

参考: Makefile with multiples rules sharing same recipe.