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

时间:2012-03-08 02:08:23

标签: c++ c makefile

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

我尝试了以下内容:

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

失败并出现以下错误:

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

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

1 个答案:

答案 0 :(得分:23)

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

:=分配立即评估右值,因此这应该有效。另一方面,=延迟了扩展语义(即只要使用左值,C++FLAGS就会扩展,这会导致递归)。