From cf2a896bcda378f90dd0f70b7b89fa3305513adb Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 20 Oct 2021 13:03:08 +0200 Subject: [PATCH] :alembic: add C++17 copies of the test binaries --- test/CMakeLists.txt | 55 ++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 9342faace..76af0f1f8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -52,6 +52,13 @@ endif() # one executable for each unit test file ############################################################################# +# check if compiler supports C++17 +foreach(feature ${CMAKE_CXX_COMPILE_FEATURES}) + if (${feature} STREQUAL cxx_std_17) + set(compiler_supports_cpp_17 TRUE) + endif() +endforeach() + file(GLOB files src/unit-*.cpp) foreach(file ${files}) @@ -69,30 +76,32 @@ foreach(file ${files}) target_link_libraries(${testcase} PRIVATE ${NLOHMANN_JSON_TARGET_NAME}) # add a copy with C++17 compilation - file(READ ${file} FILE_CONTENT) - string(FIND "${FILE_CONTENT}" "JSON_HAS_CPP_17" CPP_17_FOUND) - if(NOT ${CPP_17_FOUND} EQUAL -1) - add_executable(${testcase}_cpp17 $ ${file}) - target_compile_definitions(${testcase}_cpp17 PRIVATE DOCTEST_CONFIG_SUPER_FAST_ASSERTS) - target_compile_options(${testcase}_cpp17 PRIVATE - $<$:/EHsc;$<$:/Od>> - $<$>:-Wno-deprecated;-Wno-float-equal> - $<$:-Wno-deprecated-declarations> - ) - target_include_directories(${testcase}_cpp17 PRIVATE ${CMAKE_BINARY_DIR}/include thirdparty/doctest thirdparty/fifo_map) - target_link_libraries(${testcase}_cpp17 PRIVATE ${NLOHMANN_JSON_TARGET_NAME}) - set_target_properties(${testcase}_cpp17 PROPERTIES CXX_STANDARD 17) + if (compiler_supports_cpp_17) + file(READ ${file} FILE_CONTENT) + string(FIND "${FILE_CONTENT}" "JSON_HAS_CPP_17" CPP_17_FOUND) + if(NOT ${CPP_17_FOUND} EQUAL -1) + add_executable(${testcase}_cpp17 $ ${file}) + target_compile_definitions(${testcase}_cpp17 PRIVATE DOCTEST_CONFIG_SUPER_FAST_ASSERTS) + target_compile_options(${testcase}_cpp17 PRIVATE + $<$:/EHsc;$<$:/Od>> + $<$>:-Wno-deprecated;-Wno-float-equal> + $<$:-Wno-deprecated-declarations> + ) + target_include_directories(${testcase}_cpp17 PRIVATE ${CMAKE_BINARY_DIR}/include thirdparty/doctest thirdparty/fifo_map) + target_link_libraries(${testcase}_cpp17 PRIVATE ${NLOHMANN_JSON_TARGET_NAME}) + target_compile_features(${testcase}_cpp17 PRIVATE cxx_std_17) - if (JSON_FastTests) - add_test(NAME "${testcase}_cpp17" - COMMAND ${testcase}_cpp17 ${DOCTEST_TEST_FILTER} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - ) - else() - add_test(NAME "${testcase}_cpp17" - COMMAND ${testcase}_cpp17 ${DOCTEST_TEST_FILTER} --no-skip - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - ) + if (JSON_FastTests) + add_test(NAME "${testcase}_cpp17" + COMMAND ${testcase}_cpp17 ${DOCTEST_TEST_FILTER} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + else() + add_test(NAME "${testcase}_cpp17" + COMMAND ${testcase}_cpp17 ${DOCTEST_TEST_FILTER} --no-skip + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + endif() endif() endif()