Удалить флаг из C ++ FLAGS в Makefile? - PullRequest
17 голосов
/ 08 марта 2012

У меня есть Makefile, который включает в себя другой make-файл, который устанавливает много значений по умолчанию. Я не могу редактировать включенный make-файл, и я хотел бы изменить значение C ++ FLAGS в моем make-файле, даже если оно установлено во включенном make-файле. В частности, я хотел бы убрать флаг оптимизации из флагов C ++ всякий раз, когда отладка = 1.

Я попробовал следующее:

C++FLAGS=$(filter-out -O3,$(C++FLAGS))

, которая завершается со следующей ошибкой:

Recursive variable `C++FLAGS' references itself (eventually).  Stop.

Кажется, что делать что-то подобное можно, кто-нибудь знает секрет?

1 Ответ

24 голосов
/ 08 марта 2012
C++FLAGS:=$(filter-out -O3,$(C++FLAGS))

Назначение := немедленно оценивает значение, и поэтому оно должно работать.=, с другой стороны, имеет семантику отложенного расширения (т. Е. C++FLAGS будет расширяться всякий раз, когда используется lvalue, что приводит к рекурсии).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...