Makefile 在规则的配方部分使用%(通配符百分比)
我想这样做:Makefile 在规则的配方部分使用%(通配符百分比),makefile,wildcard,gnu-make,Makefile,Wildcard,Gnu Make,我想这样做: PHONY += bar bar: $(MAKE) foo_$@ PHONY += foo_% foo_%: cp somedir/%.a someotherdir/ .PHONY: $(PHONY) 但是%没有在配方(cp部分)中进行评估 我的解决方法是创建一个与我要使用的文件同名的假目标,但我更喜欢一个更好的解决方案: PHONY += bar bar: $(MAKE) foo_$@ PHONY += foo_% foo_%: %.a @
PHONY += bar
bar:
$(MAKE) foo_$@
PHONY += foo_%
foo_%:
cp somedir/%.a someotherdir/
.PHONY: $(PHONY)
但是%
没有在配方(cp部分)中进行评估
我的解决方法是创建一个与我要使用的文件同名的假目标,但我更喜欢一个更好的解决方案:
PHONY += bar
bar:
$(MAKE) foo_$@
PHONY += foo_%
foo_%: %.a
@:
PHONY += %.a
%.a:
cp somedir/$@ someotherdir/
.PHONY: $(PHONY)
有没有办法将扩展的
%
传递给shell命令?您正在寻找吗?是的,我正在寻找!不确定设置假变量的目标是什么,但如果您认为它会使添加到其中的目标变得假。。。不会的。关于文件末尾名为PHONY
@madcasciient的变量,我没有什么特别要说明的。PHONY:$(PHONY)
。我要加上这句话。把程序和库变成虚假目标(至少)是不寻常的。我不确定事情是否会按照你认为的方式进行。