次のディレクトリ レイアウトを持つより大きなプロジェクトに取り組んでいます。
Source
MyA
aa.cpp
ab.cpp
ac.cpp
MyB
ba.cpp
bb.cpp
bc.cpp
MyTest
testaa.cpp
testab.cpp
testac.cpp
testba.cpp
testbb.cpp
testbc.cpp
main.cpp
Build
MyA
aa.o
ab.o
ac.o
libMyA.a (static library)
MyB
ba.o
bb.o
bc.o
libMyB.a (static library)
MyTest
testaa.o
testab.o
testac.o
testba.o
testbb.o
testbc.o
MyTest (executable)
でコンパイルした後-fprofile-arcs -ftest-coverage
、Build/MyTest ディレクトリ内で MyTest アプリケーションを実行します。予想どおり、Build ディレクトリ内に *.gcno および *.gcda ファイルがあります。MyTest ディレクトリ内で gcov を実行すると、さまざまな *.gcov ファイルが生成されますが、残念ながら MyA と MyB 内のすべてのものではありませんが、すべての関数はこの 2 つのライブラリ内で呼び出されます。さまざまなオプションを試しましたが、どういうわけか、このレイアウトで有用な (つまり正しい) *.gcov ファイルを作成できません。
すべての cpp を 1 つのディレクトリ内にコピーして手順を繰り返すと、すべてが期待どおりに機能し、カバレッジ分析は完璧です。