Skip to content

Commit 2fc0544

Browse files
committed
Refactor ccov target dependencies tree
1 parent 8034d91 commit 2fc0544

File tree

1 file changed

+48
-32
lines changed

1 file changed

+48
-32
lines changed

code-coverage.cmake

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)