@@ -407,38 +407,42 @@ function(target_code_coverage TARGET_NAME)
407407        # Capture coverage data 
408408        if (${CMAKE_VERSION}  VERSION_LESS  "3.17.0" )
409409          add_custom_target (
410-             ccov-capture -${target_code_coverage_COVERAGE_TARGET_NAME} 
410+             ccov-clean -${target_code_coverage_COVERAGE_TARGET_NAME} 
411411            COMMAND  ${CMAKE_COMMAND}  -E remove -f ${COVERAGE_INFO} 
412-             COMMAND  ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --zerocounters
413-             COMMAND  $<TARGET_FILE:${TARGET_NAME} > ${target_code_coverage_ARGS} 
414-             COMMAND 
415-               ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --base-directory 
416-               ${CMAKE_SOURCE_DIR}  --capture ${EXTERNAL_OPTION}  --output -file
417-               ${COVERAGE_INFO} 
418-             COMMAND  ${EXCLUDE_COMMAND} 
419-             DEPENDS  ccov-preprocessing ${TARGET_NAME} )
412+             COMMAND  ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --zerocounters)
420413        else ()
421414          add_custom_target (
422-             ccov-capture -${target_code_coverage_COVERAGE_TARGET_NAME} 
415+             ccov-clean -${target_code_coverage_COVERAGE_TARGET_NAME} 
423416            COMMAND  ${CMAKE_COMMAND}  -E rm -f ${COVERAGE_INFO} 
424-             COMMAND  ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --zerocounters
425-             COMMAND  $<TARGET_FILE:${TARGET_NAME} > ${target_code_coverage_ARGS} 
426-             COMMAND 
427-               ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --base-directory 
428-               ${CMAKE_SOURCE_DIR}  --capture ${EXTERNAL_OPTION}  --output -file
429-               ${COVERAGE_INFO} 
430-             COMMAND  ${EXCLUDE_COMMAND} 
431-             DEPENDS  ccov-preprocessing ${TARGET_NAME} )
417+             COMMAND  ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --zerocounters)
432418        endif ()
433419
434-         # Generates HTML output of the coverage information for perusal 
435420        add_custom_target (
436-           ccov-${target_code_coverage_COVERAGE_TARGET_NAME} 
421+           ccov-capture-${target_code_coverage_COVERAGE_TARGET_NAME} 
422+           COMMAND 
423+             ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --base-directory 
424+             ${CMAKE_SOURCE_DIR}  --capture ${EXTERNAL_OPTION}  --output -file
425+             ${COVERAGE_INFO} 
426+           COMMAND  ${EXCLUDE_COMMAND} 
427+           DEPENDS )
428+ 
429+         # Only generates HTML output of the coverage information for perusal 
430+         add_custom_target (
431+           ccov-html-${target_code_coverage_COVERAGE_TARGET_NAME} 
437432          COMMAND 
438433            ${GENHTML_PATH}  -o
439434            ${CMAKE_COVERAGE_OUTPUT_DIRECTORY} /${target_code_coverage_COVERAGE_TARGET_NAME} 
440435            ${COVERAGE_INFO} 
441436          DEPENDS  ccov-capture-${target_code_coverage_COVERAGE_TARGET_NAME} )
437+ 
438+         # Generates HTML output of the coverage information for perusal 
439+         add_custom_target (
440+           ccov-${target_code_coverage_COVERAGE_TARGET_NAME} 
441+           COMMAND 
442+           DEPENDS 
443+             ccov-clean-${target_code_coverage_COVERAGE_TARGET_NAME} 
444+             ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME} 
445+             ccov-html-${target_code_coverage_COVERAGE_TARGET_NAME} )
442446      endif ()
443447
444448      add_custom_command (
@@ -456,6 +460,11 @@ function(target_code_coverage TARGET_NAME)
456460        endif ()
457461        add_dependencies (ccov ccov-${target_code_coverage_COVERAGE_TARGET_NAME} )
458462
463+         if (NOT  TARGET  ccov-html)
464+           add_custom_target (ccov-html)
465+         endif ()
466+         add_dependencies (ccov-html ccov-html-${target_code_coverage_COVERAGE_TARGET_NAME} )
467+ 
459468        if (NOT  CMAKE_C_COMPILER_ID MATCHES  "GNU"  AND  NOT  CMAKE_CXX_COMPILER_ID
460469                                                     MATCHES  "GNU" )
461470          if (NOT  TARGET  ccov-report)
@@ -629,29 +638,36 @@ function(add_code_coverage_all_targets)
629638      # Capture coverage data 
630639      if (${CMAKE_VERSION}  VERSION_LESS  "3.17.0" )
631640        add_custom_target (
632-           ccov-all -capture 
641+           ccov-all -clean 
633642          COMMAND  ${CMAKE_COMMAND}  -E remove -f ${COVERAGE_INFO} 
634-           COMMAND  ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --capture
635-                   --output -file ${COVERAGE_INFO} 
636-           COMMAND  ${EXCLUDE_COMMAND} 
637-           DEPENDS  ccov-preprocessing ccov-all -processing)
643+           COMMAND  ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --zerocounters)
638644      else ()
639645        add_custom_target (
640-           ccov-all -capture 
646+           ccov-all -clean 
641647          COMMAND  ${CMAKE_COMMAND}  -E rm -f ${COVERAGE_INFO} 
642-           COMMAND  ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --capture
643-                   --output -file ${COVERAGE_INFO} 
644-           COMMAND  ${EXCLUDE_COMMAND} 
645-           DEPENDS  ccov-preprocessing ccov-all -processing)
648+           COMMAND  ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --zerocounters)
646649      endif ()
647650
648-       # Generates HTML output of all targets for perusal 
649651      add_custom_target (
650-         ccov-all 
652+         ccov-all -capture
653+         COMMAND  ${LCOV_PATH}  --directory  ${CMAKE_BINARY_DIR}  --capture
654+                 --output -file ${COVERAGE_INFO} 
655+         COMMAND  ${EXCLUDE_COMMAND} 
656+         DEPENDS )
657+ 
658+       # Only generates HTML output of all targets for perusal 
659+       add_custom_target (
660+         ccov-all -html
651661        COMMAND  ${GENHTML_PATH}  -o ${CMAKE_COVERAGE_OUTPUT_DIRECTORY} /all -merged
652662                ${COVERAGE_INFO}  -p ${CMAKE_SOURCE_DIR} 
653663        DEPENDS  ccov-all -capture)
654664
665+       # Generates HTML output of all targets for perusal 
666+       add_custom_target (
667+         ccov-all 
668+         COMMAND 
669+         DEPENDS  ccov-preprocessing ccov-all -processing ccov-all -clean ccov-all -html)
670+ 
655671    endif ()
656672
657673    add_custom_command (
0 commit comments