我正在研究具有以下目录布局的大型项目:
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 中的所有内容,尽管在这两个库中调用了每个函数。尝试了不同的选项,但不知何故我无法使用这种布局创建有用的(意味着正确的)*.gcov 文件。
如果我将每个 cpp 复制到一个目录中并重复这些步骤,一切都会按预期工作,并且覆盖率分析是完美的。