From 6a501169c73d3ac412758579f9990647eef3d0df Mon Sep 17 00:00:00 2001 From: Florian Albrechtskirchinger Date: Mon, 9 May 2022 19:54:57 +0200 Subject: [PATCH] Add print_meta target Add a target to print JSON meta for all tested C++ standard versions. --- tests/CMakeLists.txt | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2a3866bc6..7be1c057c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -188,3 +188,39 @@ add_subdirectory(cmake_add_subdirectory) add_subdirectory(cmake_fetch_content) add_subdirectory(cmake_fetch_content2) add_subdirectory(cmake_target_include_directories) + +############################################################################# +# print JSON meta for tested C++ standard versions +############################################################################# + +set(print_meta_targets) +set(print_meta_commands) +foreach(cxx_standard ${test_cxx_standards}) + if(NOT compiler_supports_cpp_${cxx_standard}) + continue() + endif() + + set(print_meta_target print_meta_cpp${cxx_standard}) + add_executable(${print_meta_target} EXCLUDE_FROM_ALL src/print_meta.cpp) + target_compile_definitions(${print_meta_target} PRIVATE JSON_TEST_PRINT_META_WITH_MAIN JSON_TEST_NAME=${print_meta_target}) + target_compile_options(${print_meta_target} PRIVATE $<$:/EHsc;$<$:/Od>>) + target_link_libraries(${print_meta_target} PRIVATE ${NLOHMANN_JSON_TARGET_NAME}) + + # set and require C++ standard + set_target_properties(${print_meta_target} PROPERTIES + CXX_STANDARD ${cxx_standard} + CXX_STANDARD_REQUIRED ON + ) + + # apply standard-specific build settings + if(TARGET _json_test_interface__cpp_${cxx_standard}) + target_link_libraries(${print_meta_target} PRIVATE _json_test_interface__cpp_${cxx_standard}) + endif() + + list(APPEND print_meta_targets ${print_meta_target}) + list(APPEND print_meta_commands COMMAND ${print_meta_target}) +endforeach() + +add_custom_target(print_meta + ${print_meta_commands} + USES_TERMINAL)