From e860a0ae5951fcd2c6bacdd62e7edf92a8a1d9d1 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 7 May 2019 14:06:20 -0400 Subject: [PATCH] src/CMakeLists: Add /Zc:externConstexpr to the MSVC build flags The C++ standard allows constexpr variables declared with the extern keyword to have external linkage. Previously MSVC wasn't abiding by this. This just makes the compiler more standards compliant during builds. Given we currently don't make use of anything that would break by this, this is safe to enable. --- src/CMakeLists.txt | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index aac88a8c6..00dd419b9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,14 +18,15 @@ if (MSVC) # Avoid windows.h from including some usually unused libs like winsocks.h, since this might cause some redefinition errors. add_definitions(-DWIN32_LEAN_AND_MEAN) - # /W3 - Level 3 warnings - # /MP - Multi-threaded compilation - # /Zi - Output debugging information - # /Zo - Enhanced debug info for optimized builds - # /permissive- - Enables stricter C++ standards conformance checks - # /EHsc - C++-only exception handling semantics - # /Zc:inline - Let codegen omit inline functions in object files - # /Zc:throwingNew - Let codegen assume `operator new` (without std::nothrow) will never return null + # /W3 - Level 3 warnings + # /MP - Multi-threaded compilation + # /Zi - Output debugging information + # /Zo - Enhanced debug info for optimized builds + # /permissive- - Enables stricter C++ standards conformance checks + # /EHsc - C++-only exception handling semantics + # /Zc:externConstexpr - Allow extern constexpr variables to have external linkage, like the standard mandates + # /Zc:inline - Let codegen omit inline functions in object files + # /Zc:throwingNew - Let codegen assume `operator new` (without std::nothrow) will never return null add_compile_options( /W3 /MP @@ -34,6 +35,7 @@ if (MSVC) /permissive- /EHsc /std:c++latest + /Zc:externConstexpr /Zc:inline /Zc:throwingNew )