2013-06-06 19 views
5

Poniższy CMakeLists.txtUsuń domyślne flagi na cmake

SET(CMAKE_CXX_FLAGS "/DWIN32") 
SET(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS}) 
add_executable(hello hello.cpp) 

kończy się działa

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe /c /nologo /W1 /WX- /O2 /Ob2 /D WIN32 /D NDEBUG /D "CMAKE_INTDIR=\"Release\"" /D _MBCS /Gm- /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"hello.dir\Release\\" /Fd"C:/Users/monso/code/playground/cmakeworld/build/Release /hello.pdb" /Gd /TP /errorReport:queue ..\hello.cpp 

z flagami /c /nologo /W1 /WX- /O2 /Ob2 /D WIN32 /D NDEBUG.

Jak mogę je usunąć, aby umieścić własne? ustawienie CMAKE_CXX_FLAGS dołącza flagę, którą umieściłem (na przykład /w). Podczas drukowania CMAKE_CXX_FLAGS przed i po wywołaniu set zmienia swoje wartości.

+0

Wygląda na to, że niektóre podstawowe flagi są zawsze dodawane przez CMake. Nie ma sposobu, aby je usunąć, zamiast zastąpienia ich inną opcją dla tej samej flagi (np. Ustawienie '/ W0 ', aby pozbyć się'/W1'). – Fraser

+1

@Fraser Wah, wydaje mi się to podstawową i prostą cechą. Cóż, ok. Bez powodzenia. W każdym razie dzięki. – quimnuss

Odpowiedz

2

CMake używa różnych zmiennych dla każdego typu kompilacji. Nazywane są CMAKE_CXX_FLAGS_<BUILDTYPE> i CMAKE_C_FLAGS_<BUILDTYPE>

Więc dla CXX, to byłoby

CMAKE_CXX_FLAGS_DEBUG 
CMAKE_CXX_FLAGS_RELEASE 
CMAKE_CXX_FLAGS_RELWITHDEBINFO 
CMAKE_CXX_FLAGS_MINSIZEREL 

Dodatkowo, to korzysta z ustawień w "General" zmienna CMAKE_CXX_FLAGS i CMAKE_C_FLAGS

Aby więc pozbyć się wartości domyślnych, musisz ustawić globalną lub specyficzną zmienną i wyczyścić drugą (lub skonfigurować je zgodnie z potrzebą).

Uwaga: Jeśli chcesz te zmiany w pamięci podręcznej, musisz użyć parametru FORCE. W przeciwnym razie są lokalnie zatrudnieni w tym projekcie i jego projektach podrzędnych.