QtTest:不会生成moc文件
Posted
技术标签:
【中文标题】QtTest:不会生成moc文件【英文标题】:QtTest: moc file will be not generated 【发布时间】:2013-11-28 09:40:04 【问题描述】:我正在尝试使用 QTTest 构建一个简单的单元测试。 MyTest.cpp 文件如下所示:
#include <QtTest/QtTest>
class MyTest : public QObject
Q_OBJECT
private slots:
void test()
QVERIFY( true );
;
QTEST_MAIN( MyTest )
#include "mytest.moc"
现在我创建了一个简单的配置文件来生成可执行文件。但是在构建它时,编译器找不到创建的文件 mytest.moc,因为它是被创建的。当我手动安装 moc 编译器时,一切正常。
简介文件如下:
QT +=testlib
TEMPLATE = app
TARGET = unittests
INCLUDEPATH += .
# Input
SOURCES += MyTest.cpp
有人知道我错过了什么吗?我正在使用VS2010、QT5.1和Windows7。
提前致谢, 金
【问题讨论】:
qt-project.org/doc/qt-4.8/qtestlib-tutorial1.html 我们还需要包含生成的moc文件以使Qt的自省工作。你添加了moc文件吗? @Prakash 他做到了。顺便说一句,我不知道 qttest 这么糟糕。忘记它,使用普通的 unittest 框架(如 gtest)。 是的,正如您在代码中看到的那样,我们尝试在生成的文件存在时包含它。不幸的是,情况并非如此。 @Balu 提到的教程现在是here 【参考方案1】:我在 Linux 上遇到了类似的问题。包含的 moc 文件未重新生成,因此与测试用例不匹配。原因是我混合了影子构建和源代码构建,而影子构建中包含的 moc 实际上是源代码构建中停滞的一个。
这种情况下的解决方案是从源代码构建中删除 moc 文件,然后在影子构建中强制重建(清理然后构建)测试类。它会触发 moc 文件的重新生成,之后所有测试都会正常运行。
【讨论】:
以上是关于QtTest:不会生成moc文件的主要内容,如果未能解决你的问题,请参考以下文章
在visual studio 2010中为新的QOBJECT文件生成MOC