我们已经准备好与QT Creator之类的IDE一起使用的CMakeList.txt,因此一些团队成员正在使用两种不同的解决方案,一种用于Release,另一种用于Debug。
我想使用Visual Studio 2015,因此我需要考虑两种配置(发布和调试)创建一个单一的解决方案。如何正确设置不同的配置标志?
现在,CMakeList文件如下所示:
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
message("Debug Build")
set(CMAKE_CXX_FLAGS "/DWIN32 /D_WINDOWS /W3 /wd4996 /wd4251 /wd4275 /wd4267 /GR /EHsc /MP")
else()
message("Release Build")
set(CMAKE_CXX_FLAGS "/DWIN32 /D_WINDOWS /WX /W3 /wd4996 /wd4251 /wd4275 /wd4267 /GR /EHsc /MP /Ox")
endif()
所以我只能创建一个添加-D CUSTOM_BUILD_TYPE = Release
或Debug
的解决方案。我想生成一个解决方案,然后从VS决定编译为Debug或Release。
Visual Studio是一个多配置生成器,因此您可以轻松在Release和Debug之间切换。无需使用CUSTOM_BUILD_TYPE
参数。此外,CMake还提供generator expressions(例如$<$<CONFIG:Debug>: ... >
)来设置特定于配置的选项,例如您的示例中的那些选项。这些标志在Release和Debug之间看起来非常相似,因此您可以使用生成器表达式来简单地添加额外的Release标志。
不建议手动操作CMAKE_CXX_FLAGS
变量。使用target_compile_options()
设置这些标志会更安全,更清洁:
target_compile_options()