diff options
author | Brad King <brad.king@kitware.com> | 2024-09-13 16:26:18 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-09-13 16:28:49 (GMT) |
commit | 474eafe28c7f1018f0242d19214c713835f63dff (patch) | |
tree | 456f6c3b623715050299ba48c6e7099b8c310dd8 /Modules | |
parent | 747fa20ad6783c1858a52ec460a1ff8d3a5f6b2c (diff) | |
download | CMake-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.cmake | 14 |
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 |