Удалить флаг из С++ 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, что приводит к рекурсии).