GNU Make manual によると、最も「具体的な」暗黙のルールが選択されます。これは良いことです。ただし...暗黙の前提条件を作成する必要がないルールがある場合は、それがより「一般的」であっても選択されます。見る:
> touch existing
> cat Makefile
%.o: existing
@echo general
foobar%.o: foobar%.i
@echo specific
foobar%.i: ;
> rm foobar0.i
> make -r foobar0.o
general
> touch foobar0.i
> make -r foobar0.o
specific
IMHO、暗黙の前提条件が 0 であるかどうかに関係なく、特にそのような前提条件が既に存在するかどうかに関係なく、最も具体的なルールを常に選択する必要があります。しかし、ここで「なぜ」とは聞きたくありません。
代わりに、誰かが私に、望ましい動作を強制する方法を提案できますか。とにかく、適用される最も具体的なルールが常に必要です。それを強制する方法はありますか?