summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-09-13 16:26:18 (GMT)
committerBrad King <brad.king@kitware.com>2024-09-13 16:28:49 (GMT)
commit474eafe28c7f1018f0242d19214c713835f63dff (patch)
tree456f6c3b623715050299ba48c6e7099b8c310dd8 /Modules
parent747fa20ad6783c1858a52ec460a1ff8d3a5f6b2c (diff)
downloadCMake-474eafe28c7f1018f0242d19214c713835f63dff.zip
CMake-474eafe28c7f1018f0242d19214c713835f63dff.tar.gz
CMake-474eafe28c7f1018f0242d19214c713835f63dff.tar.bz2
clang-cl: Add support for C++23
Although there is no `cl -std:c++23` flag, the underlying Clang compiler does have a C++23 mode we can activate by passing `-std=c++23` through a `clang-cl` wrapper flag. Fixes: #26061
Diffstat (limited to 'Modules')
-rw-r--r--Modules/Compiler/Clang.cmake14
1 files changed, 11 insertions, 3 deletions
diff --git a/Modules/Compiler/Clang.cmake b/Modules/Compiler/Clang.cmake
index f09d36d..e85cdb2 100644
--- a/Modules/Compiler/Clang.cmake
+++ b/Modules/Compiler/Clang.cmake
@@ -245,17 +245,25 @@ macro(__compiler_clang_cxx_standards lang)
set(CMAKE_${lang}_STANDARD_LATEST 17)
if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
- set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std:c++latest")
- set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std:c++latest")
set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std:c++20")
set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std:c++20")
- set(CMAKE_${lang}_STANDARD_LATEST 23)
+ set(CMAKE_${lang}_STANDARD_LATEST 20)
elseif(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std:c++latest")
set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std:c++latest")
set(CMAKE_${lang}_STANDARD_LATEST 20)
endif()
+ if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL "17.0")
+ set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-clang:-std=c++23")
+ set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-clang:-std=c++23")
+ set(CMAKE_${lang}_STANDARD_LATEST 23)
+ elseif(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
+ set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std:c++latest")
+ set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std:c++latest")
+ set(CMAKE_${lang}_STANDARD_LATEST 23)
+ endif()
+
__compiler_check_default_language_standard(${lang} 3.9 14)
else()
# This version of clang-cl, or the MSVC version it simulates, does not have