在使用gcov获取覆盖信息时,在编译和链接期间出现以下错误
error: undefined reference to '__gcov_merge_add'
error: undefined reference to '__gcov_init'
我将标志传递给CMakeLists.txt,如下所示:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
set(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
我是否必须向CMakeLists.txt添加任何其他内容?
答案 0 :(得分:0)
假设您只想要覆盖Debug版本,那么您的标志应该是:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -fprofile-arcs -ftest-coverage")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -O0 -fprofile-arcs -ftest-coverage")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
有关详细信息,请参阅http://cmake.org/Wiki/CTest/Coverage和http://cmake.org/Wiki/CTest/Coverage/Example