虚假目标上的通配符匹配

时间:2016-06-13 15:23:18

标签: makefile gnu-make

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

有没有办法为虚假目标做同等的事情?例如:

.PHONY: compile-1 compile-2
compile-all: compile-*

这与this question类似,但我不想像AVAILABLE_MODELS那样手动列出目标。

"不,你必须列出他们"是一个可以接受的答案。

1 个答案:

答案 0 :(得分:1)

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

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

PHONY: $(compiles)

compile-all: $(compiles)

请参阅8.2 Functions for String Substitution and Analysis

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

另一方面,compile-all显然 应成为虚假的目标。