我正在使用静态模式规则编写 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'
是否可以混合静态模式规则和变量分配?谢谢!
根据 GNU make 手册,你不能那样做。但是,您可以使用$@
。在您的示例中,您可以直接分配DIR=$@
但更一般地你可以使用$@
结合patsubst
:
TARGETS = a b c d
all : $(TARGETS)
$(TARGETS) : DIR = $(patsubst %,%,$@)
$(TARGETS) : % : %_setup build
echo $@: DIR:$(DIR)
%_setup :
echo $@
build:
echo $@
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)