GNU Make 手册说,选择了最“具体”的隐式规则,这是一件好事。除非...如果有一个不需要隐含先决条件的规则,即使它更“通用”,也会选择它。看:
> 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
恕我直言,应该始终选择最具体的规则,无论是否存在 0 个隐式先决条件,尤其是这些先决条件是否已经存在。但我不想在这里问“为什么”。
相反,有人可以向我建议如何强制执行所需的行为。无论如何,我总是想要适用的最具体的规则。有办法强制吗?