我想将 gcov 与使用 QTestLib 编写的单元测试一起使用。通过将其添加到我的 .pro 文件中,我成功地沿着我的目标文件生成了一些 .gcno 文件:
QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage -O0
但是,当我跑步时:
gcov main.cpp.gcno
我生成了一堆带有无用内容的 .gcov 文件(与我在网络教程中看到的完全不同):
-: 0:Source:main.cpp
-: 0:Graph:main.gcno
-: 0:Data:-
-: 0:Runs:0
-: 0:Programs:0
-: 1:/*EOF*/
-: 2:/*EOF*/
-: 3:/*EOF*/
-: 4:/*EOF*/
-: 5:/*EOF*/
-: 6:/*EOF*/
-: 7:/*EOF*/
-: 8:/*EOF*/
-: 9:/*EOF*/
-: 10:/*EOF*/
-: 11:/*EOF*/
-: 12:/*EOF*/
-: 13:/*EOF*/
-: 14:/*EOF*/
#####: 15:/*EOF*/
-: 16:/*EOF*/
#####: 17:/*EOF*/
-: 18:/*EOF*/
-: 19:/*EOF*/
#####: 20:/*EOF*/
-: 21:/*EOF*/
-: 22:/*EOF*/
-: 23:/*EOF*/
-: 24:/*EOF*/
#####: 25:/*EOF*/
#####: 26:/*EOF*/
-: 27:/*EOF*/
-: 28:/*EOF*/
-: 29:/*EOF*/
#####: 30:/*EOF*/
我的源文件位于 ./MyProject/test/src 目录下,所有目标文件都位于 src 下的 .obj 目录中(即: .MyProject/test/src/.obj)。所有二进制文件都在 ./MyProject/build 目录中创建。
我错过了什么?
谢谢!
你运行过你的QT程序吗?在此之前还没有覆盖数据。 另外,看看 lcov,您可以使用它来获取所有内容的基于 html 的漂亮报告
值得注意的是,qmake 有(已经有一段时间了)一个 gcov CONFIG 选项,而不是直接操作 CXX_FLAGS,它似乎工作更可靠:
我在我的 .pro 文件中用这个条件实现了它:
isEmpty(RELEASE_BUILD) {
CONFIG += gcov
}