2012-03-08 26 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