From b40266c56f22abf333fd7b53a69e47df6c417fcd Mon Sep 17 00:00:00 2001 From: Derek Bailey Date: Tue, 22 Feb 2022 17:12:11 -0600 Subject: [PATCH] Use target_compile_features to target C++11 (#7122) --- CMakeLists.txt | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b2d2eab77..16413779a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,8 +41,7 @@ option(FLATBUFFERS_BUILD_FLATC "Enable the build of the flatbuffers compiler" option(FLATBUFFERS_STATIC_FLATC "Build flatbuffers compiler with -static flag" OFF) option(FLATBUFFERS_BUILD_FLATHASH "Enable the build of flathash" ON) -option(FLATBUFFERS_BUILD_BENCHMARKS "Enable the build of flatbenchmark. \" - Requires C++11." +option(FLATBUFFERS_BUILD_BENCHMARKS "Enable the build of flatbenchmark." OFF) option(FLATBUFFERS_BUILD_GRPCTEST "Enable the build of grpctest" OFF) option(FLATBUFFERS_BUILD_SHAREDLIB @@ -274,13 +273,6 @@ if(EXISTS "${CMAKE_TOOLCHAIN_FILE}") # is being configured externally message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}.") elseif(CMAKE_COMPILER_IS_GNUCXX) - if(CYGWIN) - set(CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -std=gnu++11") - else(CYGWIN) - set(CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -std=c++0x") - endif(CYGWIN) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Werror -Wextra -Werror=shadow") set(FLATBUFFERS_PRIVATE_CXX_FLAGS "-Wold-style-cast") @@ -313,13 +305,9 @@ elseif(MSVC) elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") if(APPLE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - if(FLATBUFFERS_OSX_BUILD_UNIVERSAL) set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64") endif() - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Werror -Wextra -Wno-unused-parameter") @@ -403,6 +391,7 @@ if(FLATBUFFERS_BUILD_FLATLIB) target_include_directories(flatbuffers INTERFACE $) target_compile_options(flatbuffers PRIVATE "${FLATBUFFERS_PRIVATE_CXX_FLAGS}") + target_compile_features(flatbuffers PUBLIC cxx_std_11) if(FLATBUFFERS_ENABLE_PCH) add_pch_to_target(flatbuffers include/flatbuffers/pch/pch.h) endif() @@ -414,6 +403,7 @@ if(FLATBUFFERS_BUILD_FLATC) add_pch_to_target(flatc include/flatbuffers/pch/flatc_pch.h) endif() target_compile_options(flatc PRIVATE "${FLATBUFFERS_PRIVATE_CXX_FLAGS}") + target_compile_features(flatc PUBLIC cxx_std_11) if(FLATBUFFERS_CODE_SANITIZE AND NOT WIN32) add_fsanitize_to_target(flatc ${FLATBUFFERS_CODE_SANITIZE}) endif() @@ -431,11 +421,12 @@ endif() if(FLATBUFFERS_BUILD_FLATHASH) add_executable(flathash ${FlatHash_SRCS}) + target_compile_features(flathash PUBLIC cxx_std_11) endif() if(FLATBUFFERS_BUILD_SHAREDLIB) add_library(flatbuffers_shared SHARED ${FlatBuffers_Library_SRCS}) - + target_compile_features(flatbuffers_shared PUBLIC cxx_std_11) # Shared object version: "major.minor.micro" # - micro updated every release when there is no API/ABI changes # - minor updated when there are additions in API/ABI @@ -556,6 +547,7 @@ if(FLATBUFFERS_BUILD_TESTS) endif() include_directories(${CMAKE_CURRENT_BINARY_DIR}/tests) add_executable(flattests ${FlatBuffers_Tests_SRCS}) + target_compile_features(flattests PUBLIC cxx_std_11) add_dependencies(flattests generated_code) set_property(TARGET flattests PROPERTY COMPILE_DEFINITIONS FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE @@ -568,10 +560,13 @@ if(FLATBUFFERS_BUILD_TESTS) compile_flatbuffers_schema_to_binary(samples/monster.fbs) include_directories(${CMAKE_CURRENT_BINARY_DIR}/samples) add_executable(flatsamplebinary ${FlatBuffers_Sample_Binary_SRCS}) + target_compile_features(flatsamplebinary PUBLIC cxx_std_11) add_dependencies(flatsamplebinary generated_code) add_executable(flatsampletext ${FlatBuffers_Sample_Text_SRCS}) + target_compile_features(flatsampletext PUBLIC cxx_std_11) add_dependencies(flatsampletext generated_code) add_executable(flatsamplebfbs ${FlatBuffers_Sample_BFBS_SRCS}) + target_compile_features(flatsamplebfbs PUBLIC cxx_std_11) add_dependencies(flatsamplebfbs generated_code) if(FLATBUFFERS_BUILD_CPP17) @@ -610,6 +605,7 @@ if(FLATBUFFERS_BUILD_GRPCTEST) find_package(gRPC CONFIG REQUIRED) add_executable(grpctest ${FlatBuffers_GRPCTest_SRCS}) add_dependencies(grpctest generated_code) + target_compile_features(grpctest PRIVATE cxx_std_11) target_link_libraries(grpctest PRIVATE gRPC::grpc++_unsecure gRPC::grpc_unsecure gRPC::gpr pthread dl) if(FLATBUFFERS_CODE_SANITIZE AND NOT WIN32) # GRPC test has problems with alignment and will fail under ASAN/UBSAN.