首页 文章

Qt和gcov,不生成覆盖文件

提问于
浏览
1

我正在尝试获取我为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 回答

  • 1

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

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

    第二个问题是,我必须在与编译时相同的目录结构中运行测试 . 例如,如果我在"/home/foo/src/myproject/"及其所有子目录中编译了应用程序..执行必须在同一目录结构中进行或者数据文件不会生成..

  • 1

    至少你应该使用

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

    代替

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

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

相关问题