From ca2553e30dad015326b094beede06e4846bd3ad2 Mon Sep 17 00:00:00 2001 From: Tao He Date: Sun, 31 Jul 2022 16:58:53 +0800 Subject: [PATCH] Enable C++11 when testing grpc features. (#146) Signed-off-by: Tao He --- CMakeLists.txt | 17 ++++++++++++++++- cmake/FindGRPC.cmake | 2 ++ src/SyncClient.cpp | 4 ++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 537112b..8af564a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,19 @@ if(MSVC) set(CMAKE_GNUtoMS ON) endif() +macro(use_cxx11) + if(CMAKE_VERSION VERSION_LESS "3.1") + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") + endif() + else() + set(CMAKE_CXX_STANDARD 11) + endif() +endmacro(use_cxx11) + +# ensure C++11 +use_cxx11() + find_package(Boost REQUIRED COMPONENTS system thread random) if(APPLE) # If we're on OS X check for Homebrew's copy of OpenSSL instead of Apple's @@ -87,7 +100,8 @@ else() include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindGRPC.cmake) set(GRPC_LIBRARIES ${GPR_LIBRARY} ${GRPC_LIBRARY} ${GRPC_GRPC++_LIBRARY}) endif() -if(gRPC_FOUND AND gRPC_VERSION VERSION_LESS "1.13") +# avoid use the apt-get installed libgrpc-dev (version v1.13) on Ubuntu 18.04 +if(gRPC_FOUND AND gRPC_VERSION VERSION_LESS "1.14") message(FATAL_ERROR "gRPC '${gRPC_VERSION}' is not supported, please install a newer gRPC library " "by following the example below" "\n" @@ -116,6 +130,7 @@ if(W_NO_CPP17_EXTENSIONS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++17-extensions") endif() +set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11") set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES} ${GRPC_INCLUDE_DIR}") set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES} ${GRPC_LIBRARIES}") set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") diff --git a/cmake/FindGRPC.cmake b/cmake/FindGRPC.cmake index 887558e..b05e1eb 100644 --- a/cmake/FindGRPC.cmake +++ b/cmake/FindGRPC.cmake @@ -83,6 +83,8 @@ try_run( _gRPC_GET_VERSION_COMPILE_STATUS "${CMAKE_BINARY_DIR}" "${CMAKE_BINARY_DIR}/get_gRPC_version.cc" + CMAKE_FLAGS + -DCMAKE_CXX_STANDARD=11 LINK_LIBRARIES gRPC::grpc++ gRPC::grpc diff --git a/src/SyncClient.cpp b/src/SyncClient.cpp index 6dd1000..a09aeb3 100644 --- a/src/SyncClient.cpp +++ b/src/SyncClient.cpp @@ -150,6 +150,10 @@ static std::string read_from_file(std::string const &filename) { ss << file.rdbuf (); file.close (); return ss.str (); + } else { + std::cerr << "[ERROR] failed to load given file '" << filename << "', " + << strerror(errno) + << std::endl; } return std::string{}; }