From 73cc5089e33ea950b6677e19ee7ec656c9bcf985 Mon Sep 17 00:00:00 2001 From: Kevin Tonon Date: Tue, 27 Mar 2018 12:51:30 -0400 Subject: [PATCH 1/2] Using target_compile_features to specify C++ 11 standard --- CMakeLists.txt | 4 +++- benchmarks/CMakeLists.txt | 5 +++-- test/CMakeLists.txt | 8 +++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c0acc750..958a129f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0.0) +cmake_minimum_required(VERSION 3.8) ## ## PROJECT @@ -44,6 +44,8 @@ endif() ## add_library(${NLOHMANN_JSON_TARGET_NAME} INTERFACE) +target_compile_features(${NLOHMANN_JSON_TARGET_NAME} INTERFACE cxx_std_11) + target_include_directories( ${NLOHMANN_JSON_TARGET_NAME} INTERFACE diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index c10d44e9..a53812c1 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -1,9 +1,9 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.8) project(JSON_Benchmarks LANGUAGES CXX) # set compiler flags if((CMAKE_CXX_COMPILER_ID MATCHES GNU) OR (CMAKE_CXX_COMPILER_ID MATCHES Clang)) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -flto -DNDEBUG -O3") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -DNDEBUG -O3") endif() # configure Google Benchmarks @@ -23,4 +23,5 @@ file(COPY ${CMAKE_SOURCE_DIR}/../test/data/regression/floats.json # benchmark binary add_executable(json_benchmarks src/benchmarks.cpp) +target_compile_features(json_benchmarks PRIVATE cxx_std_11) target_link_libraries(json_benchmarks benchmark ${CMAKE_THREAD_LIBS_INIT}) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e5f6dc55..c49150ad 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -6,7 +6,7 @@ option(JSON_Coverage "Build test suite with coverage information" OFF) if(JSON_Sanitizer) message(STATUS "Building test suite with Clang sanitizer") if(NOT MSVC) - set(CMAKE_CXX_FLAGS "-std=c++11 -g -O2 -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer") + set(CMAKE_CXX_FLAGS "-g -O2 -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer") endif() endif() @@ -62,11 +62,10 @@ add_library(catch_main OBJECT "src/unit.cpp" ) set_target_properties(catch_main PROPERTIES - CXX_STANDARD 11 - CXX_STANDARD_REQUIRED ON COMPILE_DEFINITIONS "$<$:_SCL_SECURE_NO_WARNINGS>" COMPILE_OPTIONS "$<$:/EHsc;$<$:/Od>>" ) +target_compile_features(catch_main PUBLIC cxx_std_11) target_include_directories(catch_main PRIVATE "thirdparty/catch") # https://stackoverflow.com/questions/2368811/how-to-set-warning-level-in-cmake @@ -96,13 +95,12 @@ foreach(file ${files}) add_executable(${testcase} $ ${file}) set_target_properties(${testcase} PROPERTIES - CXX_STANDARD 11 - CXX_STANDARD_REQUIRED ON COMPILE_DEFINITIONS "$<$:_SCL_SECURE_NO_WARNINGS>" COMPILE_OPTIONS "$<$:/EHsc;$<$:/Od>>" ) target_compile_definitions(${testcase} PRIVATE CATCH_CONFIG_FAST_COMPILE) + target_compile_features(${testcase} PRIVATE cxx_std_11) target_include_directories(${testcase} PRIVATE "thirdparty/catch") target_include_directories(${testcase} PRIVATE "thirdparty/fifo_map") target_include_directories(${testcase} PRIVATE ${NLOHMANN_JSON_INCLUDE_BUILD_DIR}) From a35d414c390c2671f2f4a9aecbd84010377175de Mon Sep 17 00:00:00 2001 From: Kevin Tonon Date: Tue, 3 Apr 2018 08:28:07 -0400 Subject: [PATCH 2/2] Update CMake to latest on Travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 8ce38cc8..68a16db5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -277,6 +277,7 @@ script: if [[ (-x $(which brew)) ]]; then brew update brew install cmake ninja + brew upgrade cmake cmake --version fi