# /project_dir/CMakeLists.txt
# ------------------------------------------------------------------------------
# Coverage 1:2
# ------------------------------------------------------------------------------
if (CMAKE_BUILD_TYPE STREQUAL "Coverage")
add_definitions(-Wno-unused-command-line-argument)
endif() #CMAKE_BUILD_TYPE STREQUAL "Coverage"
# ------------------------------------------------------------------------------
# /project_dir/test_dir/CMakeLists.txt
# ------------------------------------------------------------------------------
# Coverage 2:2
# ------------------------------------------------------------------------------
include("${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake")
setup_target_for_coverage(${PROJECT_NAME}_coverage ${PROJECT_NAME} coverage)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# Run Coverage
# ------------------------------------------------------------------------------
mkdir build && cd build
cmake -DUNIT_TEST=ON -DCMAKE_BUILD_TYPE=Coverage ..
make
make ${PROJECT_NAME}_coverage
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# Create Report
# ------------------------------------------------------------------------------
# rm extern and applications folders
lcov --remove coverage.info '*/extern/*' '*/Applications/*' '*/src/lib/*' -o coverage.trimmed.info
genhtml coverage.trimmed.info --output-directory ./coverage
# ------------------------------------------------------------------------------