使用CMake和Gcov进行编译和链接时出错

时间:2012-09-28 17:33:50

标签: cmake

在使用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添加任何其他内容?

1 个答案:

答案 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/Coveragehttp://cmake.org/Wiki/CTest/Coverage/Example