make の興味深い動作を観察していますが、gmake のバグ以外に合理的な説明があるのではないかと考えています。
makefile に次の内容があるとします。
%-animal:
echo "$* is an animal"
%-fox: %-fox-animal
%-wolf: %-wolf-animal
最後の 2 つのターゲットの違いは、"%-wolf" にはレシピがなく、"%-fox" には空のレシピがある (つまり、最初にタブがある行だけ) ということです。
ルールを実行しようとすると、次のようになります。
[root@cv19 tmp]# make freddy-animal
echo "freddy is an animal"
freddy is an animal
[root@cv19 tmp]# make freddy-wolf
make: *** No rule to make target `freddy-wolf'. Stop.
[root@cv19 tmp]# make freddy-fox
echo "freddy-fox is an animal"
freddy-fox is an animal
つまり、レシピを持つパターン ルール (空のものではありますが) は機能しますが、レシピを持たないパターン ルールは機能しません。それが機能するはずの方法で何かが欠けていますか?