【发布时间】:2011-09-11 00:18:18
【问题描述】:
我有两个文件夹 f1 和 f2,它们位于同一级别(父文件夹具有相同的文件夹)。在 f1 我有我的项目的源代码,在 f2 我有单元测试。
当我尝试将项目中的文件包含到单元测试类中时,会出现问题。我只是得到这个:
natty:/tmp/test/f2$ qmake-qt4 .
natty:/tmp/test/f2$ make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/include/qt4/QtTest -I../f1 -I. -o main.o main.cpp
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/include/qt4/QtTest -I../f1 -I. -o tcommon.o tcommon.cpp
tcommon.cpp: In member function ‘void tcommon::tCalculateMD5_str()’:
tcommon.cpp:21:50: error: ‘CalculateMD5’ was not declared in this scope
tcommon.cpp: In member function ‘void tcommon::tCalculateMD5_uint()’:
tcommon.cpp:43:50: error: ‘CalculateMD5’ was not declared in this scope
make: *** [tcommon.o] Error 1
发生了什么事?相关文件中的代码是,test/f2/tcommon.cpp:
#include "tcommon.h"
#include <common.h>
// ...
void tcommon::tCalculateMD5_str()
{
QFETCH(QString, string);
QFETCH(QString, result);
// THIS IS LINE 21 <-----------------------------------------------
QCOMPARE(CalculateMD5(string), result);
}
// ...
这里是来自test/f1/common.h 的common.h(包含找到就好了):
#ifndef COMMON_H
#define COMMON_H
#include <QtCore>
QString CalculateMD5(uint number);
QString CalculateMD5(QString str);
#endif // COMMON_H
这是无法编译的项目 (3 kb): http://www.xx77abs.com/test2.rar
【问题讨论】:
-
(a) 是的,那是我的错误,错误的话:P (b) 好的。 (c) 你能告诉我怎么做,或者给我一个链接或其他东西,以便我可以进一步研究? (d) 好吧,你可以解压它,你会得到一个不起作用的例子……我认为这比在我的问题中复制/粘贴代码要好。
-
@xx77aBs:我刚刚解决了你的问题。您的问题确实令人费解,并且描述在一定程度上被误导了。但是,您确实遇到了一个真实、合法且可以理解的问题。我希望你能学到很多关于 C 的很酷的东西 :)
-
@xx77aBs:创建a short, reproducible testcase 是编程问题的适当机制。 99.99999999% 的代码与手头的问题完全无关。
-
@Tomalak:我认为你不太公平。我怀疑你是否真的看过代码。它是 79 行(稀疏)代码。它基本上是一个经过调整的 hello world 控制台应用程序。 OP认为文件夹结构很重要,这一事实要求他建立档案,而不是发布 79 行。
-
@sehe:不,我根本没看。 SO问题应该是独立的;将其中的一部分托管在其他地方是不合适的,并且容易导致链接失效。
标签: c++ unit-testing qt compiler-errors subdirectory