在GNU Makefile中,如果我在先决条件中使用*
或在赋值中使用$(wildcard)
,它将使用shell扩展来查找匹配的文件。
有没有办法为虚假目标做同等的事情?例如:
.PHONY: compile-1 compile-2
compile-all: compile-*
这与this question类似,但我不想像AVAILABLE_MODELS
那样手动列出目标。
"不,你必须列出他们"是一个可以接受的答案。
答案 0 :(得分:1)
您不必完全列出它们。你可以根据它们的差异来计算它们, 如果那是完全不同的: -
compiles := $(patsubst %,compile-%,1 2)
PHONY: $(compiles)
compile-all: $(compiles)
请参阅8.2 Functions for String Substitution and Analysis
但是,如果compile-N
是某些编译的虚假目标,则不应该这样做
对此有一个虚假的目标。编译生成真实文件,它们就是
目标,不需要虚假目标。
另一方面,compile-all
显然 应成为虚假的目标。