为什么不使合并模式规则成为先决条件,我该如何做呢?

时间:2019-06-05 01:47:00

标签: makefile gnu-make

当我运行此Makefile时:

foo.x:
.PHONY: a b
%.x: a
%.x: b
    $(error [$^])

我知道:

Makefile:5: *** [b].  Stop.

为什么我看不到[a b]而不是[b]?如何使Make包含它们两者?

1 个答案:

答案 0 :(得分:2)

你不能那样。制作手册说,模式规则没有配方cancel the pattern rule

您可以使用同一规则中的所有先决条件来编写模式规则:

%.x: a b
        $(error [$^])

或者您可以在非模式目标上定义额外的先决条件:

foo.x: a
%.x: b
        $(error [$^])