Limit C++ flags to this library itself.

Resolves #159.

Signed-off-by: Tao He <sighingnow@gmail.com>
This commit is contained in:
Tao He 2022-09-20 20:11:10 +08:00
parent a789dc2f13
commit ed7ab08ef7
3 changed files with 32 additions and 11 deletions

View File

@ -41,19 +41,36 @@ if(MSVC)
set(CMAKE_GNUtoMS ON)
endif()
macro(use_cxx11)
if(NOT (CMAKE_CXX_COMPILER_LAUNCHER MATCHES "ccache") AND NOT (CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache"))
find_program(ccache_EXECUTABLE ccache)
if(ccache_EXECUTABLE)
set(CMAKE_C_COMPILER_LAUNCHER ${ccache_EXECUTABLE})
set(CMAKE_CXX_COMPILER_LAUNCHER ${ccache_EXECUTABLE})
add_custom_target(ccache-stats
COMMAND ${ccache_EXECUTABLE} --show-stats
)
else()
add_custom_target(ccache-stats
COMMAND echo "ccache not found."
)
endif(ccache_EXECUTABLE)
endif()
macro(use_cxx11 target)
if(CMAKE_VERSION VERSION_LESS "3.1")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
target_compile_options(${target} PRIVATE "-std=gnu++11")
else()
target_compile_options(${target} PRIVATE "-std=c++11")
endif()
else()
set(CMAKE_CXX_STANDARD 11)
set_target_properties(${target} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)
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

View File

@ -18,11 +18,13 @@ file(GLOB_RECURSE CPP_CLIENT_CORE_SRC
)
add_library(etcd-cpp-api-core-objects OBJECT ${CPP_CLIENT_CORE_SRC} ${PROTOBUF_GENERATES})
use_cxx11(etcd-cpp-api-core-objects)
add_dependencies(etcd-cpp-api-core-objects protobuf_generates)
include_generated_protobuf_files(etcd-cpp-api-core-objects)
# add the core library, includes the sycnhronous client only
add_library(etcd-cpp-api-core $<TARGET_OBJECTS:etcd-cpp-api-core-objects>)
use_cxx11(etcd-cpp-api-core)
target_link_libraries(etcd-cpp-api-core PUBLIC
${Boost_LIBRARIES}
${PROTOBUF_LIBRARIES}
@ -34,6 +36,7 @@ include_generated_protobuf_files(etcd-cpp-api-core)
# add the client with asynchronus client
add_library(etcd-cpp-api $<TARGET_OBJECTS:etcd-cpp-api-core-objects>
"${CMAKE_CURRENT_SOURCE_DIR}/Client.cpp")
use_cxx11(etcd-cpp-api)
target_link_libraries(etcd-cpp-api PUBLIC
${Boost_LIBRARIES}
${CPPREST_LIB} # n.b.: the asynchronous client requires pplx in cpprestsdk

View File

@ -18,6 +18,7 @@ foreach(testfile ${TEST_FILES})
else()
add_executable(${test_name} EXCLUDE_FROM_ALL ${CMAKE_CURRENT_SOURCE_DIR}/${testfile})
endif()
use_cxx11(${test_name})
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
target_include_directories(${test_name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../proto/gen)