我正在制作文物
foo.out
、bar.out
和qux.out
。我有一个规则%.cooked: %.raw
。
foo-★.raw
,我需要foo.out
依赖于foo-★.cooked
bar
和 qux
目前,我没有限制正在构建的
raw
文件,因此 make bar.out
正在浪费时间地烹饪数十个 foo-1.raw
、foo-2a.raw
、foo-2b.raw
等,这确实占用了我的时间。
我尝试使用二次扩展:
.SECONDEXPANSION:
$(OUTFILES): %.out: $$(patsubst %.raw,%.cooked,$$(wildcard $$%-*.raw))
build $< --output $@
但似乎这最终变成了空的,什么也没有建造。
将 Renaud 使用
$$*
的建议与 $$(call
后面的间接层相结合就达到了目的:
OUT_raws = $(patsubst %.raw,%.cooked,$(wildcard $(1)-*.raw))
.SECONDEXPANSION:
$(OUTFILES): %.out: $$(call OUT_raws,$$*)
build $< --output $@