我正在处理一个较大的项目,它具有以下目录布局:
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文件复制到一个目录中并重复这些步骤,则一切正常,并且覆盖分析完美。
lcov
。 - lllllllllllll