0

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 个隐式先决条件,尤其是这些先决条件是否已经存在。但我不想在这里问“为什么”。

相反,有人可以向我建议如何强制执行所需的行为。无论如何,我总是想要适用的最具体的规则。有办法强制吗?

4

1 回答 1

0

好吧,我可以这样做:

%.o: %.dummy
    @echo general

%.dummy: ;

我就是不喜欢这种东西。有没有更丑的方法。

于 2013-10-30T02:00:39.097 回答