macro(unit_tests) set(oneValueArgs MODULE_NAME) set(multiValueArgs FILES DEPENDENCIES) cmake_parse_arguments(UNIT_TESTS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) set(TARGET_NAME ${UNIT_TESTS_MODULE_NAME}_unit_tests) add_executable(${TARGET_NAME} ${CMAKE_SOURCE_DIR}/test/test_runner.cpp ${UNIT_TESTS_FILES}) target_link_libraries(${TARGET_NAME} PUBLIC test_utils ${UNIT_TESTS_DEPENDENCIES}) set_property(TARGET ${TARGET_NAME} PROPERTY FOLDER test/${UNIT_TESTS_MODULE_NAME}) set(UNIT_TEST_TARGETS ${UNIT_TEST_TARGETS} ${TARGET_NAME} PARENT_SCOPE) endmacro() macro(integration_tests) set(oneValueArgs MODULE_NAME) set(multiValueArgs FILES FILES_UNIX FILES_WINDOWS DEPENDENCIES) cmake_parse_arguments(UNIT_TESTS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) set(TARGET_NAME ${UNIT_TESTS_MODULE_NAME}_unit_tests) set(PLATFORM_FILES) if(UNIX) list(APPEND PLATFORM_FILES ${UNIT_TESTS_UNIX_FILES} elseif(WIN32) list(APPEND PLATFORM_FILES ${UNIT_TESTS_WIN32_FILES} endif() add_executable(${TARGET_NAME} ${CMAKE_SOURCE_DIR}/test/test_runner.cpp ${UNIT_TESTS_FILES} ${PLATFORM_FILES} ) target_link_libraries(${TARGET_NAME} PUBLIC test_utils ${UNIT_TESTS_DEPENDENCIES}) set_property(TARGET ${TARGET_NAME} PROPERTY FOLDER test/${UNIT_TESTS_MODULE_NAME}) set(UNIT_TEST_TARGETS ${UNIT_TEST_TARGETS} ${TARGET_NAME} PARENT_SCOPE) endmacro()