summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaul Tambre <raul@tambre.ee>2021-05-29 12:45:01 +0300
committerRaul Tambre <raul@tambre.ee>2021-05-29 13:35:45 +0300
commit3aaf1d91bf353559aef7ec56ad35924383ed613a (patch)
treedac1a2b53f391fc2e9ffe9913a4896cd7b154cfd
parentb9ee6db49cc45a66704dcc5459ea37fa2f939097 (diff)
downloadcmake-3aaf1d91bf353559aef7ec56ad35924383ed613a.tar.gz
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.
-rw-r--r--Modules/Compiler/MSVC-CXX.cmake9
1 files changed, 8 insertions, 1 deletions
diff --git a/Modules/Compiler/MSVC-CXX.cmake b/Modules/Compiler/MSVC-CXX.cmake
index 1dfc760f00..f1c7450fad 100644
--- a/Modules/Compiler/MSVC-CXX.cmake
+++ b/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()