From 87cf39dce9df59cbd23e6f62be1a83455a2bab6a Mon Sep 17 00:00:00 2001 From: tianrking <10758833+tianrking@users.noreply.github.com> Date: Thu, 16 Jul 2026 12:20:30 +0800 Subject: [PATCH] cmake: skip probes for required C++ standard --- CMake/AbseilDll.cmake | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/CMake/AbseilDll.cmake b/CMake/AbseilDll.cmake index 18f4f33da70..8abab5d21f6 100644 --- a/CMake/AbseilDll.cmake +++ b/CMake/AbseilDll.cmake @@ -724,10 +724,18 @@ set(ABSL_INTERNAL_TEST_DLL_TARGETS "status_matchers" ) -include(CheckCXXSourceCompiles) +if(DEFINED CMAKE_CXX_STANDARD AND CMAKE_CXX_STANDARD_REQUIRED) + if(CMAKE_CXX_STANDARD GREATER_EQUAL 20) + set(ABSL_INTERNAL_AT_LEAST_CXX20 ON) + set(ABSL_INTERNAL_AT_LEAST_CXX17 ON) + elseif(CMAKE_CXX_STANDARD GREATER_EQUAL 17) + set(ABSL_INTERNAL_AT_LEAST_CXX17 ON) + endif() +else() + include(CheckCXXSourceCompiles) -check_cxx_source_compiles( - [==[ + check_cxx_source_compiles( + [==[ #ifdef _MSC_VER # if _MSVC_LANG < 201703L # error "The compiler defaults or is configured for C++ < 17" @@ -737,10 +745,10 @@ check_cxx_source_compiles( #endif int main() { return 0; } ]==] - ABSL_INTERNAL_AT_LEAST_CXX17) + ABSL_INTERNAL_AT_LEAST_CXX17) -check_cxx_source_compiles( - [==[ + check_cxx_source_compiles( + [==[ #ifdef _MSC_VER # if _MSVC_LANG < 202002L # error "The compiler defaults or is configured for C++ < 20" @@ -750,7 +758,8 @@ check_cxx_source_compiles( #endif int main() { return 0; } ]==] - ABSL_INTERNAL_AT_LEAST_CXX20) + ABSL_INTERNAL_AT_LEAST_CXX20) +endif() if(ABSL_INTERNAL_AT_LEAST_CXX20) set(ABSL_INTERNAL_CXX_STD_FEATURE cxx_std_20)