diff --git a/CMakeLists.txt b/CMakeLists.txt index d4a68f49f5..42bd91ea37 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -318,23 +318,13 @@ if(MSVC) add_compile_options(/Oi) # Enable buffer security check on Debug, disable otherwise add_compile_options($,/GS,/GS->) - # Enforce C++ standard conforming conversion rules to catch possible bugs - add_compile_options(/permissive-) # Remove unreferenced inline functions/data to reduce link time and catch bugs + # Note: In msbuild build, this gets set by msbuild by default add_compile_options(/Zc:inline) - # Assume `new` (w/o std::nothrow) throws to reduce binary size - add_compile_options(/Zc:throwingNew) + # Fix various other non-conformant behaviors + add_compile_options(/Zc:__cplusplus,enumTypes,externConstexpr,preprocessor,throwingNew) # Enforce strict volatile semantics as per ISO C++ add_compile_options(/volatile:iso) - # Fix non-conformant lambda behavior (constexpr variables shouldn't need capturing) - add_compile_options(/experimental:newLambdaProcessor) - # Fix various other non-conformant behaviors - add_compile_options(/Zc:__cplusplus,externConstexpr,lambda,preprocessor) - - # Temporarily disable warnings to enable /Zc:preprocessor compatibility with WinSDK headers. - add_compile_options( - /wd5105 # macro expansion producing 'defined' has undefined behavior - ) # Use 'precise' floating point model add_compile_options(/fp:precise) diff --git a/Source/VSProps/Base.props b/Source/VSProps/Base.props index 29f3d6ffbf..92808650d1 100644 --- a/Source/VSProps/Base.props +++ b/Source/VSProps/Base.props @@ -33,7 +33,8 @@ true - /Zc:__cplusplus,externConstexpr,lambda,preprocessor,throwingNew /volatile:iso %(AdditionalOptions) + + /Zc:__cplusplus,enumTypes,externConstexpr,preprocessor,throwingNew /volatile:iso %(AdditionalOptions) /Zo %(AdditionalOptions) @@ -73,6 +74,7 @@ true MultiThreadedDLL false + /Gw %(AdditionalOptions) true