更改目标主体内的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 。

对于懒惰,你可以有像下面这样的规则( FLAGDEBUG是我的variables):

 .DBG: $(eval FLAG += $(DEBUG))