我正在尝试获取我为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框架。
谢谢
答案 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不会做任何有用的事情。