Изменение значения переменной Makefile внутри целевого тела

Есть ли способ переназначить значение переменной Makefile внутри целевого тела?

То, что я пытаюсь сделать, это добавить дополнительные флаги для компиляции отладки:

%.erl: %.beam
    $(ERLC) $(ERLFLAGS) -o ebin $<

test: clean debug_compile_flag compile compile_test

debug_compile:
    $(ERLCFLAGS) += -DTEST

Итак, если я вызываю тестовую цель, я бы хотел очистить среду, добавить новые флаги (например, -DTEST к существующим), скомпилировать весь код еще раз (первые источники, затем тестовые модули).

Я не хочу копировать/вставлять код для компиляции с некоторыми новыми флагами, так как здесь много логики.

Есть ли простой способ переопределить значение переменной, чтобы я мог повторно использовать существующий код?

Ответ 1

Изменить. Как объясняется Beta в другом ответе, это возможно.


Нет. В Makefile нет способа сделать это. Однако вы можете изменить значение переменной в командной строке make. Если вы переписываете свой Makefile следующим образом:

ERLCFLAGS += $(ERLCFLAGSADDED)

%.erl: %.beam
    $(ERLC) $(ERLCFLAGS) -o ebin $<

test: clean compile compile_test

Затем вы можете вызвать make для выполнения своих тестов, используя:

make ERLCFLAGSADDED=-DTEST test

Ответ 2

Да, есть простой способ сделать это и без повторного использования Make. Используйте значение переменной для цели:

test: clean debug_compile

debug_compile: ERLCFLAGS += -DTEST
debug_compile: compile compile_test;