如何使Make始终使用最具体的隐式规则?

时间:2013-10-30 01:50:28

标签: makefile gnu-make

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

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

1 个答案:

答案 0 :(得分:0)

好吧,好吧,我可以这样做:

%.o: %.dummy
    @echo general

%.dummy: ;

我只是不喜欢这种事情。是否有一种不那么丑陋的方式。