GNU制作通配符变量目标

时间:2016-03-06 19:27:06

标签: makefile wildcard gnu-make

我正在尝试使用通配符目标创建一个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中有没有办法做到这一点?

1 个答案:

答案 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 $@ : $*