add_library(catch_main OBJECT "src/unit.cpp" ) set_target_properties(catch_main PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON ) target_include_directories(catch_main PRIVATE "thirdparty/catch") # The unit test executable. set(JSON_UNITTEST_TARGET_NAME "json_unit") add_executable(${JSON_UNITTEST_TARGET_NAME} $ "src/unit-algorithms.cpp" "src/unit-allocator.cpp" "src/unit-capacity.cpp" "src/unit-cbor.cpp" "src/unit-class_const_iterator.cpp" "src/unit-class_iterator.cpp" "src/unit-class_lexer.cpp" "src/unit-class_parser.cpp" "src/unit-comparison.cpp" "src/unit-concepts.cpp" "src/unit-constructor1.cpp" "src/unit-constructor2.cpp" "src/unit-convenience.cpp" "src/unit-conversions.cpp" "src/unit-deserialization.cpp" "src/unit-element_access1.cpp" "src/unit-element_access2.cpp" "src/unit-inspection.cpp" "src/unit-iterator_wrapper.cpp" "src/unit-iterators1.cpp" "src/unit-iterators2.cpp" "src/unit-json_patch.cpp" "src/unit-json_pointer.cpp" "src/unit-meta.cpp" "src/unit-modifiers.cpp" "src/unit-msgpack.cpp" "src/unit-noexcept.cpp" "src/unit-pointer_access.cpp" "src/unit-readme.cpp" "src/unit-reference_access.cpp" "src/unit-regression.cpp" "src/unit-serialization.cpp" "src/unit-testsuites.cpp" "src/unit-udt.cpp" "src/unit-unicode.cpp" ) set_target_properties(${JSON_UNITTEST_TARGET_NAME} PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON ) if(MSVC) set_target_properties(${JSON_UNITTEST_TARGET_NAME} PROPERTIES COMPILE_DEFINITIONS "_SCL_SECURE_NO_WARNINGS" COMPILE_OPTIONS "/EHsc;$<$:/Od>" ) endif() target_include_directories(${JSON_UNITTEST_TARGET_NAME} PRIVATE "src" "thirdparty/catch") target_link_libraries(${JSON_UNITTEST_TARGET_NAME} ${JSON_TARGET_NAME}) include(cotire OPTIONAL) if(COMMAND cotire) set_target_properties(${JSON_UNITTEST_TARGET_NAME} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE COTIRE_CXX_PREFIX_HEADER_INIT "src/prefix.hpp" ) # HACK - CMAKE_INCLUDE_SYSTEM_FLAG_CXX has a trailing space, which Cotire doesn't strip # Technically, this fix should go in cotire.cmake. TODO - submit a pull request upstream. if (CMAKE_INCLUDE_SYSTEM_FLAG_CXX) string (STRIP "${CMAKE_INCLUDE_SYSTEM_FLAG_CXX}" CMAKE_INCLUDE_SYSTEM_FLAG_CXX) endif() cotire(${JSON_UNITTEST_TARGET_NAME}) endif() add_test(NAME "${JSON_UNITTEST_TARGET_NAME}_default" COMMAND ${JSON_UNITTEST_TARGET_NAME} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) add_test(NAME "${JSON_UNITTEST_TARGET_NAME}_all" COMMAND ${JSON_UNITTEST_TARGET_NAME} "*" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} )