function(add_code_coverage) list(GET ARGN 0 _target) find_program(LCOV_EXE NAMES lcov) find_program(GENHTML_EXE NAMES genhtml) target_compile_options(_target PUBLIC "--coverage") if(LCOV_EXE) add_custom_target(coverage-${_target} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMAND ${LCOV_EXE} --test-name ${_target} --output "${_target}.lcov" --capture --directory ${CMAKE_BINARY_DIR}) add_dependencies(coverage-${_target} ${_target}) if(GENHTML_EXE) add_custom_target(coverage-report-${_target} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMAND ${GENHTML_EXE} --output-directory "report-${_target}" "${_target}.lcov") add_dependencies(coverage-report-${_target} coverage-${_target}) endif() endif() endfunction()