更改目标主体内的Makefilevariables值
有没有一种方法来重新分配目标正文内的Makefilevariables值?
我想要做的是为debugging编译添加一些额外的标志:
%.erl: %.beam $(ERLC) $(ERLFLAGS) -o ebin $< test: clean debug_compile_flag compile compile_test debug_compile: $(ERLCFLAGS) += -DTEST
所以,如果我调用testing目标,我想清理我的环境,添加一些新的标志(像-DTEST到现有的),再次编译整个代码(第一个来源,然后testing模块)。
我不想复制/粘贴代码来编译一些新的标志集,因为这里和那里有很多逻辑。
有没有简单的方法来重新定义variables的值,所以我可以重用现有的代码?
编辑 :如在另一个答案的Beta所解释的,这是可能的。
不,在Makefile中没有办法做到这一点。 但是,您可以在make
命令行上更改variables的值。 如果你重写你的Makefile如下:
ERLCFLAGS += $(ERLCFLAGSADDED) %.erl: %.beam $(ERLC) $(ERLCFLAGS) -o ebin $< test: clean compile compile_test
然后,您可以使用以下命令调用make来执行testing:
make ERLCFLAGSADDED=-DTEST test
是的,有一个简单的方法来做到这一点,而不需要重新运行Make。 使用目标特定的variables值 :
test: clean debug_compile debug_compile: ERLCFLAGS += -DTEST debug_compile: compile compile_test;
另一个答案是: 在规则执行时定义makevariables 。
对于懒惰,你可以有像下面这样的规则( FLAG
和DEBUG
是我的variables):
.DBG: $(eval FLAG += $(DEBUG))