1313# Adds compiler flags necessary to be able to collect coverage information.
1414#
1515function (append_coverage_compiler_flags)
16- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g --coverage" PARENT_SCOPE)
17- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g --coverage" PARENT_SCOPE)
16+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g --coverage -O0 " PARENT_SCOPE)
17+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g --coverage -O0 " PARENT_SCOPE)
1818 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage" PARENT_SCOPE)
1919 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage" PARENT_SCOPE)
2020endfunction () # append_coverage_compiler_flags
@@ -79,8 +79,6 @@ function(setup_target_for_coverage)
7979
8080 # Generate HTML file using genhtml.
8181 COMMAND ${GENHTML_PATH} -o ${Coverage_NAME} ${Coverage_NAME} .info
82- # Show result in terminal.
83- COMMAND ${LCOV_PATH} --list ${Coverage_NAME} .info
8482
8583 BYPRODUCTS
8684 ${Coverage_NAME} .base
@@ -95,9 +93,11 @@ function(setup_target_for_coverage)
9593endfunction () # setup_target_for_coverage
9694
9795# Call functions defined above with customized arguments.
96+ # Attention: For some gcov versions, you have to add --ignore-errors mismatch to the LCOV_ARGS.
97+ # This seems to be a common gcov problem.
9898append_coverage_compiler_flags()
9999setup_target_for_coverage(
100100 NAME coverage
101- EXCLUDE "${CMAKE_SOURCE_DIR} /sc*"
102- LCOV_ARGS " --no-external"
101+ EXCLUDE "${CMAKE_SOURCE_DIR} /sc*" " ${CMAKE_SOURCE_DIR} /p4est*" " ${CMAKE_SOURCE_DIR} /test*" " ${CMAKE_SOURCE_DIR} /thirdparty*" " ${CMAKE_SOURCE_DIR} /tutorials*" " ${CMAKE_SOURCE_DIR} /example*" " ${CMAKE_SOURCE_DIR} /benchmarks*"
102+ LCOV_ARGS --no -external -- ignore -errors gcov
103103)
0 commit comments