我正在尝试使用通配符目标创建一个makefile,但通配符应该与变量匹配。
所以我有一个这样的makefile:
A_OUT := bin/a
B_OUT := bin/b
# This does not work
$(%_OUT):
@echo $@
输出:
$ make bin/a
make: *** No rule to make target 'bin/a'. Stop.
我无法使用bin/%:
因为变量可能指向另一个目录。
在GNU make中有没有办法做到这一点?
答案 0 :(得分:3)
如果您只想要一个目标列表都具有相同的配方,那么只需将它们全部列在同一规则定义中。 e.g。
$(A_OUT) $(B_OUT):
@echo $@
您也可以使用变量:
A_OUT := bin/a
TGTS += $(A_OUT)
B_OUT := bin/b
TGTS += $(B_OUT)
$(TGTS):
@echo $@
根据您的需要,您可能还想使用Static Pattern Rules
$(TGTS) : bin/% :
@echo $@ : $*