diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5ee1a556275eb967ac6badfa552299fa162c0699..8cea01697194a8e95358f51f75734f2695f77e58 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -252,7 +252,9 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "Coverage")
 
   add_custom_target(coverage-clean-up
     ALL
-    COMMAND find "${PUGS_BINARY_DIR}" -name \*.gcda -exec rm -f {} +;
+    COMMAND ${CMAKE_COMMAND}
+    -DPUGS_BINARY_DIR="${PUGS_BINARY_DIR}"
+    -P ${PUGS_SOURCE_DIR}/cmake/CoverageRemoveObsoleteFiles.cmake
     COMMENT "Removing obsolete gcda to perform a net coverage."
     )
 
diff --git a/cmake/CoverageRemoveObsoleteFiles.cmake b/cmake/CoverageRemoveObsoleteFiles.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..d388916a71d81ba1e4a5651bbfd736d997bd2fbe
--- /dev/null
+++ b/cmake/CoverageRemoveObsoleteFiles.cmake
@@ -0,0 +1,9 @@
+# ------------------------------------------------------------------------------
+# Remove obsolete generated files that could last after a failing test-suite run
+# These are generally trailing .gcda files
+# ------------------------------------------------------------------------------
+
+file(GLOB_RECURSE GCDA_FILE_LIST  "${PUGS_BINARY_DIR}/*.gcda")
+if(GCDA_FILE_LIST)
+  file(REMOVE ${GCDA_FILE_LIST})
+endif()