diff --git a/cmake/enable_code_coverage_report.cmake b/cmake/enable_code_coverage_report.cmake new file mode 100644 index 0000000000000000000000000000000000000000..44c270dc484c7f7b51380130b1e2f768b91c8927 --- /dev/null +++ b/cmake/enable_code_coverage_report.cmake @@ -0,0 +1,40 @@ +####################################################################################################################### +# enable_code_coverage_report.cmake +# +# Enable possibility to generate a code coverage report when compiling in 'Debug' mode. +# Configure with the option -DCMAKE_BUILD_TYPE=Debug. +# It require working tests which can be called with 'make test'. The coverage is created +# over these tests. +# +# You need lcov installed to use the 'make coverage' command. +# +# This script appends to the variable CMAKE_CXX_FLAGS_DEBUG, +# and adds the target 'coverage', only available in 'Debug' mode. +# +####################################################################################################################### + +####################################################################################################################### +# +# IMPORTANT NOTE: +# +# DO NOT MODIFY THIS FILE inside a project. Instead update the project-template repository and pull the change from +# there. Make sure to keep the file generic, since it will be used by other projects, too. +# +# If you have modified this file inside a project despite this warning, make sure to cherry-pick all your changes +# into the project-template repository immediately. +# +####################################################################################################################### + +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 --coverage") + +#The make coverage command is only available in debug mode +IF(CMAKE_BUILD_TYPE STREQUAL "Debug") + configure_file(cmake/make_coverage.sh.in + ${PROJECT_BINARY_DIR}/make_coverage.sh @ONLY) + add_custom_target(coverage + ./make_coverage.sh + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating test coverage documentation" VERBATIM + ) +ENDIF(CMAKE_BUILD_TYPE STREQUAL "Debug") +