Установка make-переменной внутри цели - PullRequest
1 голос
/ 21 ноября 2011

Учитывая GNU Make 3.81.

В приведенном ниже make-файле

all:
        echo before
TEST=1
        echo after

выдается «команды, начинающиеся до первой цели. Стоп».в строке «TEST = 1».

С другой стороны, добавив «переопределить» в TEST следующим образом:

all:
        echo before
override TEST=1
        echo after

работает нормально (и «до», и «после» «напечатаны»).

Вопросы:

  1. Почему «TEST = 1» не в порядке, а «override TEST = 1» - в порядке?

  2. Почему "override TEST = 1" внутри команды цели в порядке?Проба

1 Ответ

1 голос
/ 21 ноября 2011

Полагаю, что

override TEST=1

интерпретируется как:

override: TEST=1

..., что совершенно верно в GNU make.

Вы можете изменитьПеременные для каждой цели, просто назвав цель, а затем установив переменную так, как вы бы это сделали в глобальном разделе файла make, например:

<target>: <variable>:=<value>
<target>: <variable>=<value>
<target>: <variable>+=<value>

Таким образом, это обычное место для добавления чего-либо кили измените CFLAGS только для одного объектного файла ...

ПРИМЕЧАНИЕ: Однако , это неверный синтаксис для назначения переменной внутри командного блокацели, как вы пытались.

...