【发布时间】:2017-02-02 22:29:43
【问题描述】:
我正在使用静态模式规则编写 Makefile,我希望为 TARGETS 的每个元素分配一个分配给当前目标名称的变量(这里是词干 '%')。
TARGETS = a b c d
all : $(TARGETS)
$(TARGETS) : % : DIR = %
$(TARGETS) : % : %_setup build
a_setup :
code for a
b_setup :
code for b
...
build
code using "DIR = XX" previously configured
但是 gnumake 抱怨目标特定的变量 DIR:
make: *** No rule to make target 'DIR', needed by 'a'
是否可以混合使用静态模式规则和变量分配?谢谢!
【问题讨论】:
-
在这种特定情况下,您可以使用
TARGET: DIR=$@。 -
您永远不需要这样做。静态模式规则的一个要求是您有一个目标列表......因此您始终可以在该目标列表中使用正常的特定于目标的变量。