@@ -76,49 +76,19 @@ ENDIF()
7676
7777# Compile Code Coverage if Specified with Tests
7878IF ( FDPAPI_CODE_COVERAGE AND FDPAPI_BUILD_TESTS )
79- MESSAGE ( STATUS "[Coverage]" )
80- SET ( COVERAGE_COMPILER_FLAGS "--coverage -fprofile-arcs -ftest-coverage" )
81- SET ( CMAKE_CXX_FLAGS "-std=gnu++17 -O0 -Wall -Wextra -Werror ${COVERAGE_COMPILER_FLAGS} ${CMAKE_CXX_FLAGS} " )
82- SET ( CMAKE_C_FLAGS "-O0 -Wall -Wextra ${COVERAGE_COMPILER_FLAGS} ${CMAKE_C_FLAGS} " )
83- MESSAGE ( "\t CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS} " )
84- MESSAGE ( "\t CMAKE_C_FLAGS: ${CMAKE_C_FLAGS} " )
85-
86-
87- find_program ( LCOV_PATH NAMES lcov lcov.bat lcov.exe lcov.perl)
88- find_program ( GCOV_PATH gcov )
89-
90- set (LCOV_EXCLUDES "build/*" "/usr*" )
91-
92- add_custom_target (coverage
93-
94- # Cleanup lcov
95- COMMAND ${LCOV_PATH} --gcov-tool ${GCOV_PATH} -directory . -b ${PROJECT_SOURCE_DIR} --zerocounters
96-
97- # Create baseline to make sure untouched files show up in the report
98- COMMAND ${LCOV_PATH} --gcov-tool ${GCOV_PATH} -c -i -d . -b ${PROJECT_SOURCE_DIR} -o ${FDPAPI} .base
99-
100- # Run executables
101- COMMAND ${CMAKE_BINARY_DIR} /test /${FDPAPI} -tests ${COV_TEST_FLAGS}
102-
103- # Capturing lcov counters and generating report
104- COMMAND ${LCOV_PATH} --gcov-tool ${GCOV_PATH} --directory . -b ${PROJECT_SOURCE_DIR} --capture --output -file ${FDPAPI} .capture
105-
106- # add baseline counters
107- COMMAND ${LCOV_PATH} --gcov-tool ${GCOV_PATH} -a ${FDPAPI} .base -a ${FDPAPI} .capture --output -file ${FDPAPI} .total
108-
109- # filter collected data to final coverage report and merge outputs
110- COMMAND ${LCOV_PATH} --gcov-tool ${GCOV_PATH} --remove ${FDPAPI} .total ${LCOV_EXCLUDES} --output -file ${FDPAPI} .info
111-
112- # Set output files as GENERATED (will be removed on 'make clean')
113- BYPRODUCTS
114- ${FDPAPI} .base
115- ${FDPAPI} .capture
116- ${FDPAPI} .total
117- ${FDPAPI} .info
118- ${FDPAPI} # report directory
119-
120- WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
121- VERBATIM # Protect arguments to commands
122- COMMENT "Resetting code coverage counters to zero.\n Processing code coverage counters and generating report."
123- )
79+ if (CMAKE_COMPILER_IS_GNUCXX)
80+ LIST (APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR} /cmake_modules" )
81+ include (CodeCoverage)
82+ APPEND_COVERAGE_COMPILER_FLAGS()
83+
84+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 --coverage" )
85+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0" )
86+
87+ #set(COVERAGE_EXCLUDES 'build/*' 'usr/*')
88+ #set(Coverage_BASE_DIRECTORY ${CMAKE_SOURCE_DIR})
89+ setup_target_for_coverage_gcovr_sonar(NAME coverage
90+ EXECUTABLE bin/${FDPAPI} -tests
91+ DEPENDENCIES ${FDPAPI} -tests
92+ BASE_DIRECTORY ${CMAKE_SOURCE_DIR} )
93+ endif ()
12494ENDIF ()
0 commit comments