# Initialize ###################################################################################### Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE ) Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC ) Include ( cmake_tests OPTIONAL RESULT_VARIABLE HAS_CMAKE_TESTS ) Find_Package ( Sanitizers QUIET ) # Test ############################################################################################ Find_Package ( GTest ) If ( NOT "${GTest_FOUND}" ) Return ( ) EndIf ( ) File ( GLOB_RECURSE ASYNCPP_TEST_HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h ) File ( GLOB_RECURSE ASYNCPP_TEST_INLINE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.inl ) File ( GLOB_RECURSE ASYNCPP_TEST_SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) ForEach ( FILE IN LISTS ASYNCPP_TEST_SOURCE_FILES ) # add test Get_Filename_Component ( TEST_DIR ${FILE} DIRECTORY ) Get_Filename_Component ( TEST_NAME ${FILE} NAME_WE ) Set ( TEST_NAME "${TEST_DIR}/${TEST_NAME}" ) String ( REPLACE "\\" "-" TEST_NAME "${TEST_NAME}" ) String ( REPLACE "/" "-" TEST_NAME "${TEST_NAME}" ) String ( REPLACE "_" "-" TEST_NAME "${TEST_NAME}" ) Set ( TEST_NAME "test-${TEST_NAME}" ) Add_Executable ( ${TEST_NAME} EXCLUDE_FROM_ALL ${ASYNCPP_TEST_HEADER_FILES} ${ASYNCPP_TEST_INLINE_FILES} ${FILE} ) Target_Link_Libraries ( ${TEST_NAME} PUBLIC asyncpp GMock::Main ) # Sanitizers If ( Sanitizers_FOUND ) Add_Sanitizers ( ${TEST_NAME} ) EndIf ( ) # pedantic If ( HAS_PEDANTIC ) Pedantic_Apply_Flags_Target ( ${TEST_NAME} ALL ) EndIf ( ) # test If ( HAS_CMAKE_TESTS ) Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} GROUP asyncpp ) Else ( ) Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) EndIf ( ) EndForEach ( )