@@ -16,6 +16,12 @@ ELSE()
16
16
set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Release" )
17
17
ENDIF ()
18
18
19
+ IF ( FDPAPI_CODE_COVERAGE )
20
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 --coverage" )
21
+ message ("CXX Flags: ${CMAKE_CXX_FLAGS} " )
22
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0" )
23
+ ENDIF ()
24
+
19
25
# Define Project
20
26
PROJECT ( fdpapi
21
27
VERSION 0.1.0
@@ -76,49 +82,16 @@ ENDIF()
76
82
77
83
# Compile Code Coverage if Specified with Tests
78
84
IF ( 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
- )
85
+ if (CMAKE_COMPILER_IS_GNUCXX )
86
+ LIST (APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR} /cmake_modules" )
87
+ include (CodeCoverage )
88
+ APPEND_COVERAGE_COMPILER_FLAGS ()
89
+
90
+ #set(COVERAGE_EXCLUDES 'build/*' 'usr/*')
91
+ #set(Coverage_BASE_DIRECTORY ${CMAKE_SOURCE_DIR})
92
+ setup_target_for_coverage_gcovr_sonar (NAME coverage
93
+ EXECUTABLE bin/${FDPAPI}-tests
94
+ DEPENDENCIES ${FDPAPI} -tests
95
+ BASE_DIRECTORY ${CMAKE_SOURCE_DIR} )
96
+ endif ()
124
97
ENDIF ()
0 commit comments