Makefile GNU生成通配符变量目标
我试图创建一个带有通配符目标的makefile,但是通配符应该在变量上匹配 我有一个这样的makefile: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中有什么方法可以做到这一点吗?如果
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