Как добавить в переменную командной строки в gnu make?

#makefile #gnu-make

#makefile #gnu-сделать #gnu-make

Вопрос:

В gnu make я могу добавить к переменной, используя = оператор в Makefile

 V  = foo
V  = bar

all:
    echo "$(V)"
  

Выполняется:

 $ make
echo "foo bar"
foo bar
  

Однако, если я определю переменную в командной строке,

 $ make V=fail
echo "fail"
fail
  

тогда ничего не добавляется.

как я могу заставить gnu make добавить к переменной, определенной в командной строке?

Ответ №1:

Назначения командной строки имеют приоритет над назначениями в makefile, даже если назначения в makefile являются операциями добавления.

Чтобы назначения в makefile имели приоритет, вы должны использовать override ключевое слово:

 override V  = foo
override V  = bar

all:
        echo "$(V)"
  

Комментарии:

1. Можно также использовать V=fail make , т. Е. Установить ее как переменную среды.

Ответ №2:

Для назначения переменных в makefile для переопределения определений в командной строке вам необходимо использовать override директиву

Итак, назначения переменных в вашем makefile должны выглядеть следующим образом:

 override V  = bar