Существует ли способ повторно присвоить значение переменной Make-файла в целевом теле?
Что я пытаюсь сделать, должны добавить некоторые дополнительные флаги для компиляции отладки:
%.erl: %.beam
$(ERLC) $(ERLFLAGS) -o ebin $<
test: clean debug_compile_flag compile compile_test
debug_compile:
$(ERLCFLAGS) += -DTEST
Таким образом, если бы я вызываю тестовую цель, я хотел бы очистить свою среду, добавить некоторые новые флаги (как-DTEST к существующим), скомпилировать целый код еще раз (первые источники, затем протестировать модули).
Я не хочу к скопировать/вставить коду для компиляции с некоторым новым набором флагов, так как существует большая логика, помещенная тут и там.
Там некоторый простой способ состоит в том, чтобы переопределить значение переменной, таким образом, я могу снова использовать существующий код?
Изменить : Как объяснил Бета в другом ответе , это возможно.
Нет. В Makefile это невозможно сделать. Однако вы можете изменить значение переменной в командной строке make
. Если вы переписываете свой Makefile следующим образом:
ERLCFLAGS += $(ERLCFLAGSADDED)
%.erl: %.beam
$(ERLC) $(ERLCFLAGS) -o ebin $<
test: clean compile compile_test
Затем вы можете вызвать make для выполнения ваших тестов, используя:
make ERLCFLAGSADDED=-DTEST test
Да, есть простой способ сделать это без повторного запуска Make. Используйте значение целевой переменной :
test: clean debug_compile
debug_compile: ERLCFLAGS += -DTEST
debug_compile: compile compile_test;