function(addSubDirs_ofRoot anchorPath) message("scanning: ${anchorPath}") file(GLOB targetModules RELATIVE "${anchorPath}" "${anchorPath}/*") foreach(module ${targetModules}) message("checking: ${module}") get_filename_component(moduleName ${module} NAME) set(modulePath "${anchorPath}/${moduleName}") if (NOT IS_DIRECTORY "${modulePath}") # skip files continue() endif() if (${moduleName} MATCHES "^_.*") # skip ignored component continue() endif() if(EXISTS "${modulePath}/${DEF_UTESTDIR}") message("Found unit-test: ${moduleName}") add_subdirectory("${modulePath}/${DEF_UTESTDIR}" ${moduleName}) endif() endforeach() endfunction() macro(unitTestsFrame) if (CMAKE_TESTING_ENABLED) # get_filename_component(moduleName "${CMAKE_CURRENT_LIST_DIR}/.." NAME) file(GLOB_RECURSE targetSources "../${DEF_SRCDIR}/*.cpp" "../${DEF_SRCDIR}/*.c") add_library(${moduleName} ${targetSources}) target_include_directories(${moduleName} PUBLIC "../${DEF_INCLUDEDIR}") set(moduleTestName "${moduleName}Test") file(GLOB_RECURSE testSource "*.cpp") add_executable(${moduleTestName} ${testSource}) target_link_libraries(${moduleTestName} PRIVATE ${moduleName} doctest::doctest) target_include_directories(${moduleTestName} PRIVATE "../${DEF_SRCDIR}") add_test (TEST-${moduleName} ${moduleTestName}) # gtest_discover_tests(${moduleTestName} # PROPERTIES TIMEOUT 30 LABELS ${moduleName} LABELS "all" # ) endif() endmacro()