Я работаю над большим проектом со следующей структурой каталогов:
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-охват
я запускаю приложение MyTest в каталоге Build / MyTest. Как и ожидалось, внутри каталога сборки находятся файлы * .gcno и * .gcda. После запуска gcov в каталоге MyTest разные *. Файлы gcov создаются, но, к сожалению, не для всего в MyA и MyB, хотя каждая функция вызывается внутри этих двух библиотек. Пробовал разные варианты, но почему-то я не могу создавать полезные (значит, правильные) файлы * .gcov с этим макетом.
Если я копирую каждый cpp в один каталог и повторяю шаги, все работает, как ожидалось, и анализ покрытия идеален.