Qt和gcov,不生成覆盖文件

时间:2010-12-19 14:29:57

标签: unit-testing qt qt4 code-coverage

我正在尝试获取我为Arora浏览器编写的组件的代码覆盖率,这是使用C ++和Qt框架编写的。

我无法在gnu / Linux和Mac Os X下使用gcov程序。我尝试了在互联网上找到的所有内容,也强制自动编辑.pro文件生成的Makefile。

是的,有人能帮帮我吗?这是我非常简单的专业档案:

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
LIBS += -lgcov
QMAKE_CXXFLAGS += -g -fprofile-arcs -ftest-coverage -O0
QMAKE_LDFLAGS += -g -fprofile-arcs -ftest-coverage  -O0


include(../autotests.pri)

# Input
SOURCES += tst_quickview.cpp
HEADERS +=

Makefile正确包含标志。我也尝试了--coverage选项。但没有任何反应。当我运行可执行文件时,不会生成任何gcov文件。没有错误也没有警告。我正在使用QTestLib框架。

谢谢

2 个答案:

答案 0 :(得分:1)

在我遇到类似问题的情况下,问题出在目录结构中。

第一个问题是,为了在执行期间生成正确的.gc *文件,需要禁用编译器缓存。我从来没有真正调试过这个问题但是现在,我假设gconv文件在编译器缓存文件夹中存在,并且在执行覆盖检测二进制文件时,二进制文件无法识别应该生成新数据文件的位置。

第二个问题是,我必须在相同的目录结构中运行测试,就像编译它们一样。例如,如果我在“/ home / foo / src中编译了应用程序/ myproject /“及其所有子目录。执行必须在同一目录结构中发生,否则数据文件将不会生成..

答案 1 :(得分:1)

至少你应该使用

QMAKE_LFLAGS += -g -fprofile-arcs -ftest-coverage  -O0

而不是

QMAKE_LDFLAGS += -g -fprofile-arcs -ftest-coverage  -O0

我不确定这是否能解决您的问题,但QMAKE_LDFLAGS不会做任何有用的事情。