-
- # Find Lcov tools
- find_program(LCOV lcov DOC "LCov")
- find_program(LCOV_GENHTML genhtml DOC "LCov GenHtml" HINTS ${LCOV}/..)
-
- if( NOT LCOV OR NOT LCOV_GENHTML )
- message(SEND_ERROR "LCov tools not found")
- endif()
-
-
- # Files and folders
- set(COV_DIR "${CMAKE_BINARY_DIR}/coverage")
- set(COV_FILE "${COV_DIR}/${PROJECT_NAME}.info")
-
- if( NOT EXISTS ${COV_DIR} )
- file(MAKE_DIRECTORY ${COV_DIR})
- endif()
-
-
- # Compiler flags
- set(flag --coverage)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
-
-
- set(INPUT_DIR "${CMAKE_SOURCE_DIR}")
-
- # Make targets
- add_custom_target(coverage-clean ${CMAKE_COMMAND} -E make_directory ${COV_DIR}
- COMMAND ${LCOV}
- --directory ${INPUT_DIR}
- --zerocounters
-
- WORKING_DIRECTORY ${COV_DIR}
- COMMENT "Zerocounter coverage data"
- VERBATIM
- )
-
- add_custom_target(coverage ${CMAKE_COMMAND} -E make_directory ${COV_DIR}
- COMMAND ${LCOV}
- --capture
- --directory ${INPUT_DIR}
- --output-file ${COV_FILE}
- --no-external
-
- COMMAND ${LCOV}
- --remove ${COV_FILE} "*/test/*"
- --remove ${COV_FILE} "*/generated/*"
- --output-file ${COV_FILE}
-
- COMMAND ${LCOV_GENHTML} --legend ${COV_FILE}
-
- WORKING_DIRECTORY ${COV_DIR}
- COMMENT "Generate coverage data"
- VERBATIM
- )
|