2012-03-08 20 views
14

Mam plik Makefile zawierający inny plik makefile, który ustawia wiele wartości domyślnych. Nie mogę edytować dołączonego pliku makefile i chciałbym zmienić wartość FLAGÓW C++ w moim pliku makefile, nawet jeśli jest ustawiony w dołączonym pliku makefile. W szczególności chciałbym usunąć flagę optymalizacji z FLAGI C++, gdy debug = 1.Usunąć flagę z FLAGI C++ w Makefile?

Próbowałem następujące:

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

Które nie powiedzie się z powodu następującego błędu:

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

Wydaje się, że robi coś jak to powinno być możliwe, ktoś zna sekret?

Odpowiedz

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

Przypisanie natychmiast:= ocenia rvalue i to powinno działać. = z drugiej strony ma opóźnioną semantykę rozszerzenia (tj. C++FLAGS rozwinie się po każdym użyciu l-wartości, co prowadzi do rekursji).

+0

Argh! Wiedziałem, że musi to być coś prostszego. Dzięki. –