diff --git a/CMakeLists.txt b/CMakeLists.txt index 369914e04..f89b256f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,8 +28,14 @@ project( VERSION 1.35.0 LANGUAGES CXX C) +find_package(absl CONFIG REQUIRED) + +# Use CMAKE_CXX_STANDARD=17 if ABSL_USE_CXX17 is set +if (ABSL_USE_CXX17) + message(STATUS "Found absl uses CXX17, enable CXX17 feature.") + set(CMAKE_CXX_STANDARD 17) # Allow applications to override the CMAKE_CXX_STANDARD, but if not set use 11. -if (NOT CMAKE_CXX_STANDARD) +elseif (NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 11) endif () if (CMAKE_CXX_STANDARD VERSION_LESS 11) diff --git a/google/cloud/internal/port_platform.h b/google/cloud/internal/port_platform.h index c9f34cf4c..e62400431 100644 --- a/google/cloud/internal/port_platform.h +++ b/google/cloud/internal/port_platform.h @@ -49,6 +49,8 @@ // Abort compilation if the compiler does not support C++11. #if GOOGLE_CLOUD_CPP_CPP_VERSION < 201103L # error "C++11 or newer is required" +#elif defined(ABSL_USE_CXX17) && GOOGLE_CLOUD_CPP_CPP_VERSION < 201703L +# error "Compiled to use Abseil with C++17 support, but using with C++ < C++17" #endif // GOOGLE_CLOUD_CPP_CPP_VERSION < 201103L // Abort the build if the version of the compiler is too old. With CMake we