私は初めて、カバレッジ ツール gcov を使用して大規模なプロジェクトを分析しています。次のようなディレクトリ構造があります。
HW
-FooHW1.cpp
-FooHW1.h
-FooHW2.cpp
-FooHW2.h
-...
-Makefile.am
Lib1
-FooLib1.cpp
-FooLib1.h
-FooLib2.cpp
-FooLib2.h
-...
-Makefile.am
Lib2
...
-Makefile.am
Lib3
...
-Makefile.am
Main
-main.cpp
-main.h
-Makefile.am
各ディレクトリには、依存関係を生成するために automake を使用して生成された独自の Makefile があり、コンパイラが使用する場所はすべて c++ です。
私の目的はステートメント カバレッジの分析であるため、gcov を使用するために、次の行を各 Makefile.am に追加して .gcno および .gcda ファイルを生成しようとしました。
AM_CXXFLAGS = -fprofile-arcs -ftest-coverage
AM_LDFLAGS = -fprofile-arcs
残念ながら、コンパイルしてもいくつかの *.o が作成 (またはリンク) されず、gcov を呼び出すと、通常、次のエラーが表示されます。
undefined __gcov_init
http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#index-coverage-536によると、上位の指示に従って、次のことも試してみました。
AM_CXXFLAGS = --coverage
AM_LDFLAGS = --coverage
しかし、それは私にとってはうまくいきません。
gcov ツールを使用し、大規模な C++ プロジェクトを扱うのはこれが初めての経験であることを明記したいと思います。助けてくれてありがとう。