以下CMakeLists.txt
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
时,确实会更改其值。
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
Additionally,它使用“常规”变量CMAKE_CXX_FLAGS
和CMAKE_C_FLAGS
]中的设置
因此,为了摆脱默认值,您需要设置全局或特定变量并清除另一个变量(或根据需要配置它们)。
注意:
如果要在缓存中进行这些更改,则需要使用FORCE
参数。否则,他们将在本地受雇于该项目及其子项目。使用set_target_property。