2013-06-06 3 views
5

Следующая CMakeLists.txtУдалить стандартные флаги на CMake

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

заканчивает работы

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 

с флагами /c /nologo /W1 /WX- /O2 /Ob2 /D WIN32 /D NDEBUG.

Как я могу удалить их, чтобы разместить свои собственные? установка CMAKE_CXX_FLAGS добавляет флаг, который я положил (например, /w). При печати CMAKE_CXX_FLAGS до и после вызова set его значения изменяются.

+0

Похоже, что некоторые базовые флаги всегда добавляются CMake. Невозможно удалить их, заменив их другой опцией для одного и того же флага (например, установив '/ W0', чтобы избавиться от'/W1'). – Fraser

+1

@Fraser Wah, кажется, такая простая и простая функция для меня. Ладно. Тогда нет успеха. Спасибо хоть. – quimnuss

ответ

2

CMake использует различные переменные для каждого типа сборки. Они называются CMAKE_CXX_FLAGS_<BUILDTYPE> и CMAKE_C_FLAGS_<BUILDTYPE>

Так, CXX, это было бы

CMAKE_CXX_FLAGS_DEBUG 
CMAKE_CXX_FLAGS_RELEASE 
CMAKE_CXX_FLAGS_RELWITHDEBINFO 
CMAKE_CXX_FLAGS_MINSIZEREL 

Кроме, он использует настройки в «общем» переменная CMAKE_CXX_FLAGS и CMAKE_C_FLAGS

Так что для того, чтобы избавиться от настроек по умолчанию, вам нужно будет установить глобальную или конкретную переменную и очистить другую (или настроить их по мере необходимости).

Примечание: Если вам нужны эти изменения в кеше, вам необходимо использовать параметр FORCE. В противном случае они на местном уровне работают в этом проекте и его дочерних проектах.

Смежные вопросы