在Makefile中,我想从先决条件列表中引用目标名称并使用它构建一些东西。形式的东西:
%.foo: $(addsuffix .bar, $(DATA_%))
@echo $<
所以,假设你有:
DATA_test = 1 2 3
当你把它称为:
make test
那将扩展为:
1.bar 2.bar 3.bar
这有可能吗?什么是解决问题的更好方法?
答案 0 :(得分:1)
如果你的Make版本有secondary expansion,这可能会有用(我无法测试它,因为今天所有我都很方便的是旧版本。)
.SECONDEXPANSION:
%.foo: $$(addsuffix .bar, $$(DATA_$$*))
@echo $^
没有它,我认为没有比这更好的方法:
define FOO_RULE
$(1).foo: $(addsuffix .bar,$(DATA_$(1)))
endef
FOO_TYPES = test real whatever
$(foreach t,$(FOO_TYPES),$(eval $(call FOO_RULE,$(t))))
%.foo:
@echo building $@ from $^