从Makefile中的C++ FLAGS中删除一个标志?

Pau*_*cks 17 c c++ makefile

我有一个包含另一个makefile的Makefile,它设置了很多默认值.我无法编辑包含的makefile,我想在makefile中更改C++ FLAGS的值,即使它是在包含的makefile中设置的.具体来说,每当debug = 1时,我想从C++ FLAGS中删除优化标志.

我尝试了以下方法:

C++FLAGS=$(filter-out -O3,$(C++FLAGS))
Run Code Online (Sandbox Code Playgroud)

哪个失败,出现以下错误:

Recursive variable `C++FLAGS' references itself (eventually).  Stop.
Run Code Online (Sandbox Code Playgroud)

似乎做这样的事情应该是可能的,任何人都知道秘密吗?

0xC*_*22L 24

C++FLAGS:=$(filter-out -O3,$(C++FLAGS))
Run Code Online (Sandbox Code Playgroud)

:=任务立即评估右值,因此这应该工作.=另一方面,延迟扩展语义(即C++FLAGS每当使用左值时会扩展,这会导致递归).