Makefile 为什么赢了';我不能使合并模式规则成为先决条件,我如何使它做到这一点?

Makefile 为什么赢了';我不能使合并模式规则成为先决条件,我如何使它做到这一点?,makefile,gnu-make,Makefile,Gnu Make,运行此Makefile时: foo.x: .PHONY: a b %.x: a %.x: b $(error [$^]) 我明白了: Makefile:5: *** [b]. Stop. 为什么我看不到[ab]而不是[b]?我怎样才能把它们都包括进去?你不能这样做。制作手册上说,模式规则没有配方 您可以使用同一规则中的所有先决条件编写模式规则: %.x: a b $(error [$^]) 或者,您可以在非模式目标上定义额外的先决条件: foo.x: a %.x:

运行此Makefile时:

foo.x:
.PHONY: a b
%.x: a
%.x: b
    $(error [$^])
我明白了:

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

为什么我看不到
[ab]
而不是
[b]
?我怎样才能把它们都包括进去?

你不能这样做。制作手册上说,模式规则没有配方

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

%.x: a b
        $(error [$^])
或者,您可以在非模式目标上定义额外的先决条件:

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

你不能那样做。制作手册上说,模式规则没有配方

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

%.x: a b
        $(error [$^])
或者,您可以在非模式目标上定义额外的先决条件:

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