#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