2012-03-08 51 views
14

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

我试过如下:

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

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

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

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

回答

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

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

+0

唉!我知道它必须是那样的简单。谢谢。 – 2012-03-08 02:23:59