diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9c9ebb66d38180d2758af03380a7aa5e8b378513..5ee1a556275eb967ac6badfa552299fa162c0699 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -250,9 +250,16 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "Coverage")
 
   set(GCOVR_OPTIONS --object-directory="${PUGS_BINARY_DIR}" -r "${PUGS_SOURCE_DIR}/src" ${GCOVR_EXCLUDE} ${GCOVR_EXTRA})
 
+  add_custom_target(coverage-clean-up
+    ALL
+    COMMAND find "${PUGS_BINARY_DIR}" -name \*.gcda -exec rm -f {} +;
+    COMMENT "Removing obsolete gcda to perform a net coverage."
+    )
+
   add_custom_target(coverage
     ALL
     COMMAND ${GCOVR} ${GCOVR_OPTIONS} --exclude-unreachable-branches --sort-percentage
+    DEPENDS coverage-clean-up
     DEPENDS run_unit_tests pugs
     COMMENT "Running gcovr to build coverage report."
     )