我有一个 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.
好像做这样的事情应该是可能的,有人知道其中的 secret 吗?
最佳答案
C++FLAGS:=$(filter-out -O3,$(C++FLAGS))
:=
赋值立即 评估右值,因此这应该有效。另一方面,=
具有延迟扩展语义(即,只要使用左值,C++FLAGS
就会扩展,从而导致递归)。
关于c++ - 从 Makefile 中的 C++FLAGS 中删除标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611987/