Makefile GNU生成通配符变量目标

Makefile GNU生成通配符变量目标,makefile,wildcard,gnu-make,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中有什么方法可以做到这一点吗?如果

我试图创建一个带有通配符目标的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中有什么方法可以做到这一点吗?

如果您只想让目标列表具有相同的配方,那么只需在相同的规则定义中列出它们。e、 g

$(A_OUT) $(B_OUT):
        @echo $@
您也可以为此使用一个变量:

A_OUT := bin/a
TGTS += $(A_OUT)
B_OUT := bin/b
TGTS += $(B_OUT)

$(TGTS):
        @echo $@
根据您的需要,您可能也想使用


如果您只希望目标列表具有相同的配方,那么只需在相同的规则定义中列出它们。e、 g

$(A_OUT) $(B_OUT):
        @echo $@
您也可以为此使用一个变量:

A_OUT := bin/a
TGTS += $(A_OUT)
B_OUT := bin/b
TGTS += $(B_OUT)

$(TGTS):
        @echo $@
根据您的需要,您可能也想使用


为什么不能使用
bin/%
?作为目录的目标对此有何更改?你计划在目标中做什么,而你提议的代码片段使用
bin/%
却做不到?@EtanReisner我不能这样称呼它:
make A_OUT=anotherdir/A anotherdir/A
为什么不能使用
bin/%
?作为目录的目标对此有何更改?您计划在目标中做什么,而您提议的代码片段使用
bin/%
不会做什么?@EtanReisner我不能这样称呼它:
make A_OUT=anotherdir/A anotherdir/A