【问题标题】:GNU make wildcard variable targetGNU制作通配符变量目标
【发布时间】:2023-03-05 04:44:01
【问题描述】:

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

【问题讨论】:

  • 为什么不能使用bin/%?作为目录的目标对此有何改变?你打算在你提议的 sn-p 使用 bin/% 没有做到的目标中做什么?
  • @EtanReisner 我不能这样称呼它:make A_OUT=anotherdir/a anotherdir/a

标签: makefile wildcard gnu-make


【解决方案1】:

如果您只是想要一个目标列表都具有相同的配方,那么只需在相同的规则定义中列出它们。例如

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-04
    • 2010-12-28
    • 2023-03-05
    • 2017-11-08
    • 2013-12-19
    • 2012-07-18
    • 2013-08-13
    • 1970-01-01
    相关资源
    最近更新 更多