@@ -103,7 +103,7 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
103103endif ()
104104
105105set (CODE_COVERAGE_LCOV_EXTRA_FLAGS
106- "--ignore-errors=gcov,mismatch"
106+ "--ignore-errors=gcov,mismatch,mismatch "
107107 CACHE STRING "Extra command line flags to pass to lcov." )
108108
109109set (CODE_COVERAGE_GCOVR_EXTRA_FLAGS
@@ -262,6 +262,31 @@ if(CODE_COVERAGE AND NOT CODE_COVERAGE_INITIALIZED)
262262 if (LCOV_PATH)
263263 add_custom_target (ccov-clean COMMAND ${LCOV_PATH} --directory
264264 ${CMAKE_BINARY_DIR} --zerocounters)
265+ execute_process (
266+ COMMAND "${LCOV_PATH} " --version
267+ RESULT_VARIABLE _result
268+ OUTPUT_VARIABLE _output
269+ OUTPUT_STRIP_TRAILING_WHITESPACE)
270+ message (STATUS "_output: ${_output} " )
271+ if (_result EQUAL 0 AND _output MATCHES " LCOV version ([0-9]+)" )
272+ set (LCOV_MAJOR_VERSION "${CMAKE_MATCH_1} " )
273+ if (LCOV_MAJOR_VERSION VERSION_LESS "2"
274+ AND CODE_COVERAGE_LCOV_EXTRA_FLAGS MATCHES "mismatch" )
275+ message (
276+ WARNING
277+ "Does not support mismatch by lcov less 2 and remove params from ${CODE_COVERAGE_LCOV_EXTRA_FLAGS} ..."
278+ )
279+ string (REPLACE [[mismatch]] "" CODE_COVERAGE_LCOV_EXTRA_FLAGS
280+ ${CODE_COVERAGE_LCOV_EXTRA_FLAGS} )
281+ set (CODE_COVERAGE_LCOV_EXTRA_FLAGS
282+ "${CODE_COVERAGE_LCOV_EXTRA_FLAGS} "
283+ CACHE STRING "Extra flags to pass to lcov" FORCE)
284+ message (
285+ STATUS
286+ "Final CODE_COVERAGE_LCOV_EXTRA_FLAGS: ${CODE_COVERAGE_LCOV_EXTRA_FLAGS} "
287+ )
288+ endif ()
289+ endif ()
265290 endif ()
266291
267292 elseif (CMAKE_C_COMPILER_ID MATCHES [[MSVC]] OR CMAKE_CXX_COMPILER_ID MATCHES
0 commit comments