GNU make 通配符变量目标
GNU make wildcard variable target
我正在尝试创建一个包含通配符目标的 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) $(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 $@ : $*
我正在尝试创建一个包含通配符目标的 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) $(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 $@ : $*