Makefile 假目标上的通配符匹配

Makefile 假目标上的通配符匹配,makefile,gnu-make,Makefile,Gnu Make,在GNU Makefile中,如果我在先决条件中使用*,或在赋值中使用$(通配符),它将使用shell扩展来查找匹配的文件 有没有办法对虚假目标进行等效?例如: .PHONY: compile-1 compile-2 compile-all: compile-* 这与类似,但我不想在可用\u模型中手动列出目标 “不,你必须列出它们”是一个可以接受的答案。你不必完全列出它们。你可以根据它们的差异来计算, 如果有足够的不同:- compiles := $(patsubst %,compile-%,

在GNU Makefile中,如果我在先决条件中使用
*
,或在赋值中使用
$(通配符)
,它将使用shell扩展来查找匹配的文件

有没有办法对虚假目标进行等效?例如:

.PHONY: compile-1 compile-2
compile-all: compile-*
这与类似,但我不想在
可用\u模型中手动列出目标


“不,你必须列出它们”是一个可以接受的答案。

你不必完全列出它们。你可以根据它们的差异来计算, 如果有足够的不同:-

compiles := $(patsubst %,compile-%,1 2)

PHONY: $(compiles)

compile-all: $(compiles)

但是,如果
compile-N
是某些编译的虚假目标,则不应该这样做 有一个虚假的目标。编译生成真实的文件,它们是 目标,不需要假目标


另一方面,
compile-all
显然应该是一个虚假的目标。

compile-N
不是真实的files@OrangeDog. 我很感激这一点,但我怀疑这些食谱中的每一个都是一个真实的文件,或者说是一个没有虚假目标的文件。当然,这只是一种预感。在一般情况下,您可能需要枚举所有目标。不幸的是,这并不完全是微不足道的。看见