我正在尝试对继承QObject的类进行单元测试;类本身位于目录结构的一个级别上。当我构建单元测试时,如果找不到类的moc文件,我会得到标准的未解决错误:
test.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall UnitToTest::qt_metacast(char const *)" (?qt_metacast@UnitToTest@@UAEPAXPBD@Z)
+ 2 missing functions
MOC文件已创建,但似乎未链接。我在网上和qt的文档里翻了好长一段时间,然后撞到了墙上。
如何让单元测试在链接中包含MOC文件?
===
我的项目文件非常简单:
TEMPLATE = app
TARGET = test
DESTDIR = .
CONFIG += qtestlib
INCLUDEPATH += . ..
DEPENDPATH += .
HEADERS += test.h
SOURCES += test.cpp ../UnitToTest.cpp stubs.cpp
DEFINES += UNIT_TEST
我的目录结构和文件:
C:.
| UnitToTest.cpp
| UnitToTest.h
|
\---test
| test.cpp (Makefiles removed for clarity)
| test.h
| test.pro
| stubs.cpp
|
+---debug
| UnitToTest.obj
| test.obj
| test.pdb
| moc_test.cpp
| moc_test.obj
| stubs.obj
编辑:
附加信息
生成的
Makefile.Debug
显示缺少的MOC文件:
SOURCES = test.cpp \
..\test.cpp \
stubs.cpp debug\moc_test.cpp
OBJECTS = debug\test.obj \
debug\UnitToTest.obj \
debug\stubs.obj \
debug\moc_test.obj