Browse Source

MSVC: C++20 final flag, C++23 support

Microsoft intends to ship the final C++20 flag in VS 16.11 albeit with a few
parts missing due planned ABI breaking changes.
The current 16.11 Preview 1 toolchain version is 19.29.30129.3, so let's
restrict based on that.
Raul Tambre 4 years ago
parent
commit
3aaf1d91bf
1 changed files with 8 additions and 1 deletions
  1. 8 1
      Modules/Compiler/MSVC-CXX.cmake

+ 8 - 1
Modules/Compiler/MSVC-CXX.cmake

@@ -18,6 +18,7 @@ if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND
   set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "")
   set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std:c++14")
   set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std:c++14")
+
   if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.11.25505)
     set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
     set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
@@ -27,7 +28,13 @@ if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND
     set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std:c++latest")
     set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std:c++latest")
   endif()
-  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.12.25835)
+
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29.30129)
+    set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++20")
+    set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++20")
+    set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std:c++latest")
+    set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std:c++latest")
+  elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.12.25835)
     set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++latest")
     set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++latest")
   endif()