CMakeLists: Enable several conformance flags on MSVC

Makes MSVC more standards compliant regarding various C++ constructs.
This commit is contained in:
Lioncash 2020-03-31 20:52:20 -04:00
parent 11c40415f5
commit 4deb785fba
1 changed files with 8 additions and 2 deletions

View File

@ -84,10 +84,16 @@ if(MSVC)
set(HAVE_WORDS_BIGENDIAN_EXITCODE 0)
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
add_compile_options(/EHsc)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
add_compile_options(
/permissive- # Enforce various standards compliance features.
/Zc:externConstexpr # Allow extern constexpr variables according to the standard.
/Zc:throwingNew # Assume new throws, allowing for better code generation.
)
# Link-time Code Generation for Release builds (excluding clang-cl)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(CMAKE_C_FLAGS_RELEASE "/DNDEBUG /O2 /Oy /GL /Gy /MD")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "/DNDEBUG /Zi /O2 /Oy- /GL /Gy /MD")
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "/LTCG")