Удалить флаг из С++ FLAGS в Makefile?
У меня есть Makefile, который включает в себя еще один make файл, который устанавливает множество значений по умолчанию. Я не могу редактировать включенный make файл, и я хотел бы изменить значение С++ FLAGS в моем make файле, даже если он установлен во включенном make файле. В частности, я хотел бы удалить флаг оптимизации из С++ FLAGS всякий раз, когда debug = 1.
Я попробовал следующее:
C++FLAGS=$(filter-out -O3,$(C++FLAGS))
Что происходит со следующей ошибкой:
Recursive variable `C++FLAGS' references itself (eventually). Stop.
Кажется, что делать что-то подобное должно быть возможно, кто-нибудь знает секрет?
Ответы
Ответ 1
C++FLAGS:=$(filter-out -O3,$(C++FLAGS))
Назначение :=
немедленно оценивает значение rvalue, и поэтому это должно работать. =
с другой стороны имеет задержанную семантику расширения (т.е. C++FLAGS
будет расширяться всякий раз, когда используется lvalue, что приводит к рекурсии).