Use CMakePresets to define CI/CD configurations and introduce coverage target

This commit is contained in:
2023-03-09 10:54:37 +01:00
parent e00ee59631
commit aa0b8e9160
6 changed files with 137 additions and 42 deletions

56
cmake/coverage.cmake Normal file
View File

@@ -0,0 +1,56 @@
set(
COVERAGE_BASE_COMMAND
lcov -c -q -i
-o "${PROJECT_BINARY_DIR}/coverage_base.info"
-d "${PROJECT_BINARY_DIR}"
--include "${PROJECT_SOURCE_DIR}/src/*"
CACHE STRING
"Command to generate initial zero coverage data"
)
set(
COVERAGE_TRACE_COMMAND
lcov -c -q
-o "${PROJECT_BINARY_DIR}/coverage_tests.info"
-d "${PROJECT_BINARY_DIR}"
--include "${PROJECT_SOURCE_DIR}/src/*"
CACHE STRING
"Command to generate coverage data"
)
set(
COVERAGE_COMBINE_COMMAND
lcov -q
-a "${PROJECT_BINARY_DIR}/coverage_base.info"
-a "${PROJECT_BINARY_DIR}/coverage_tests.info"
-o "${PROJECT_BINARY_DIR}/coverage.info"
CACHE STRING
"Command to combine coverage files to resulting coverage data"
)
set(
COVERAGE_HTML_COMMAND
genhtml --legend -f -q
"${PROJECT_BINARY_DIR}/coverage.info"
-p "${PROJECT_SOURCE_DIR}"
-o "${PROJECT_BINARY_DIR}/coverage_html"
CACHE STRING
"Command to generate HTML report for the coverage"
)
set(
COVERAGE_LIST_COMMAND
lcov
--list "${PROJECT_BINARY_DIR}/coverage.info"
)
add_custom_target(
coverage
COMMAND ${COVERAGE_BASE_COMMAND}
COMMAND ${COVERAGE_TRACE_COMMAND}
COMMAND ${COVERAGE_COMBINE_COMMAND}
COMMAND ${COVERAGE_HTML_COMMAND}
COMMAND ${COVERAGE_LIST_COMMAND}
COMMENT "Generate coverage report"
VERBATIM
)