4

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 に他に何か追加する必要がありますか?

4

2 に答える 2

0

デバッグビルドのカバレッジのみが必要であると仮定すると、フラグは次のようになります。

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を参照してください。

于 2012-09-28T19:01:26.387 に答える