From 1b4a80241354d04b68e2108080f274f43ef931a0 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 12 Mar 2025 14:21:10 -0400 Subject: MSVC: Split C++23 flag selection into dedicated block --- Modules/Compiler/MSVC-CXX.cmake | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Modules/Compiler/MSVC-CXX.cmake b/Modules/Compiler/MSVC-CXX.cmake index 2243a14..f30983e 100644 --- a/Modules/Compiler/MSVC-CXX.cmake +++ b/Modules/Compiler/MSVC-CXX.cmake @@ -35,15 +35,19 @@ if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND 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") - set(CMAKE_CXX_STANDARD_LATEST 23) + set(CMAKE_CXX_STANDARD_LATEST 20) 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") set(CMAKE_CXX_STANDARD_LATEST 20) endif() + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29.30129) + set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std:c++latest") + set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std:c++latest") + set(CMAKE_CXX_STANDARD_LATEST 23) + endif() + __compiler_check_default_language_standard(CXX 19.0 14) elseif (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0) -- cgit v0.12 From b3f1c60aff007508056659386cde0756eb506964 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 12 Mar 2025 14:23:00 -0400 Subject: MSVC: Use -std:c++23preview flag for C++23 when available This was added by VS 17.13. Fixes: #26692 --- Modules/Compiler/MSVC-CXX.cmake | 6 +++++- Templates/MSBuild/FlagTables/v143_CL.json | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Modules/Compiler/MSVC-CXX.cmake b/Modules/Compiler/MSVC-CXX.cmake index f30983e..a82e76c 100644 --- a/Modules/Compiler/MSVC-CXX.cmake +++ b/Modules/Compiler/MSVC-CXX.cmake @@ -42,7 +42,11 @@ if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND set(CMAKE_CXX_STANDARD_LATEST 20) endif() - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29.30129) + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.43.34808) + set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std:c++23preview") + set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std:c++23preview") + set(CMAKE_CXX_STANDARD_LATEST 23) + elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29.30129) set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std:c++latest") set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std:c++latest") set(CMAKE_CXX_STANDARD_LATEST 23) diff --git a/Templates/MSBuild/FlagTables/v143_CL.json b/Templates/MSBuild/FlagTables/v143_CL.json index c5f9472..f0431a6 100644 --- a/Templates/MSBuild/FlagTables/v143_CL.json +++ b/Templates/MSBuild/FlagTables/v143_CL.json @@ -498,6 +498,13 @@ }, { "name": "LanguageStandard", + "switch": "std:c++23preview", + "comment": "Preview - ISO C++23 Standard", + "value": "stdcpp23", + "flags": [] + }, + { + "name": "LanguageStandard", "switch": "std:c++latest", "comment": "Preview - Features from the Latest C++ Working Draft", "value": "stdcpplatest", -- cgit v0.12