2012-03-08 30 views
14

Tôi có một Makefile bao gồm một makefile khác đặt nhiều giá trị mặc định. Tôi không thể chỉnh sửa makefile bao gồm và tôi muốn thay đổi giá trị của C + + CỜ trong makefile của tôi mặc dù nó được thiết lập trong makefile bao gồm. Cụ thể, tôi muốn loại bỏ cờ tối ưu hóa từ C++ FLAGS bất cứ khi nào debug = 1.Xóa cờ khỏi C++ FLAGS trong Makefile?

tôi thử như sau:

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

nào không thành công với các lỗi sau:

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

Nó có vẻ như làm một cái gì đó như thế này nên có thể, ai biết bí mật?

Trả lời

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

Các := phân ngay đánh giá rvalue và do đó điều này sẽ làm việc. Mặt khác, = đã trì hoãn ngữ nghĩa mở rộng (tức là C++FLAGS sẽ mở rộng bất cứ khi nào giá trị lvalue được sử dụng, dẫn đến đệ quy).

+0

Argh! Tôi biết nó phải là một cái gì đó đơn giản như thế. Cảm ơn. –