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
This commit is contained in:
parent
747fa20ad6
commit
474eafe28c
@ -2,9 +2,9 @@ if("$ENV{CMAKE_CI_BUILD_NAME}" MATCHES "(^|_)gnu(_|$)")
|
||||
set(CMake_TEST_C_STANDARDS "90;99;11;17;23" CACHE STRING "")
|
||||
set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23;26" CACHE STRING "")
|
||||
else()
|
||||
# FIXME: Implement C23 and C++23 support for clang-cl.
|
||||
# FIXME: Implement C23 support for clang-cl.
|
||||
set(CMake_TEST_C_STANDARDS "90;99;11;17" CACHE STRING "")
|
||||
set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20" CACHE STRING "")
|
||||
set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "")
|
||||
endif()
|
||||
|
||||
set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "")
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user