if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0) # The new Python3 module is much more robust than the previous PythonInterp find_package(Python3 COMPONENTS Interpreter) # Set variables for backwards compatibility with cmake < 3.12.0 set(PYTHONINTERP_FOUND ${Python3_Interpreter_FOUND}) set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE}) else() set(Python_ADDITIONAL_VERSIONS 3.8) find_package(PythonInterp 3) endif() add_executable(jsontestrunner_exe main.cpp ) if(BUILD_SHARED_LIBS) if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0) add_compile_definitions( JSON_DLL ) else() add_definitions(-DJSON_DLL) endif() target_link_libraries(jsontestrunner_exe jsoncpp_lib) else() target_link_libraries(jsontestrunner_exe jsoncpp_static) endif() set_target_properties(jsontestrunner_exe PROPERTIES OUTPUT_NAME jsontestrunner_exe) if(PYTHONINTERP_FOUND) # Run end to end parser/writer tests set(TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../test) set(RUNJSONTESTS_PATH ${TEST_DIR}/runjsontests.py) # Run unit tests in post-build # (default cmake workflow hides away the test result into a file, resulting in poor dev workflow?!?) add_custom_target(jsoncpp_readerwriter_tests "${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" $ "${TEST_DIR}/data" DEPENDS jsontestrunner_exe jsoncpp_test ) add_custom_target(jsoncpp_check DEPENDS jsoncpp_readerwriter_tests) ## Create tests for dashboard submission, allows easy review of CI results https://my.cdash.org/index.php?project=jsoncpp add_test(NAME jsoncpp_readerwriter COMMAND "${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" $ "${TEST_DIR}/data" WORKING_DIRECTORY "${TEST_DIR}/data" ) add_test(NAME jsoncpp_readerwriter_json_checker COMMAND "${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" --with-json-checker $ "${TEST_DIR}/data" WORKING_DIRECTORY "${TEST_DIR}/data" ) endif()