QT4的基本编译问题

时间:2010-05-07 04:59:11

标签: qt qt4 g++ mingw32

我一直在尝试从大学教科书中获取一个简单的清单,以便使用我昨晚下载的最新QT SDK for Windows进行编译。在经历了常规的废话(没有make.bat,需要手动添加环境变量等等)后,我终于可以构建了。但是这两个库中只有一个似乎有效。

我使用的.pro文件很简单:

SUBDIRS += utils \
           dataobjects

TEMPLATE = subdirs

在这两个子文件夹的每个子文件夹中,我都有一个库的源代码。运行QMAKE会生成一个makefile并运行Make运行所有的预备,然后在g ++调用上失败:

g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc --out-implib,libdataobjects.a -shared -mthreads -Wl -Wl,--out-implib,c:\Users\Cobus\workspace\lib\libdataobjects.a -o ..\..\lib\dataobjects.dll object_script.dataobjects.Debug  -L"c:\Users\Cobus\Portab~1\Qt\2010.02.1\qt\lib" -LC:\Users\Cobus\workspace\lib -lutils -lQtXmld4 -lQtGuid4 -lQtCored4
c:/users/cobus/portab~1/qt/2010.02.1/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lutils

问题似乎在命令行的末尾附近,其中添加了-lutils,表明有一个名为utils的库。虽然我本来希望看到这一点,你会注意到--out中的库名称在名称中包含lib之后,因此它们变成了libutils和libdataobjects。我试图弄清楚为什么会这样,但无济于事。

任何人都知道发生了什么事?

2 个答案:

答案 0 :(得分:0)

它们似乎是另一个专业文件,因为生成的Makefile正在拉动QtXml,默认情况下不会这样做。

请检查子目录中的.pro或.pri文件..其中一个可以解决您的困惑

答案 1 :(得分:0)

.pro文件使用SUBDIRS模板,该模板需要与每个子目录的目录名匹配的.pro文件。您还应该有一个utils\utils.prodataobjects\dataobject.pro文件。

c:\Users\Cobus\workspace\lib\libdataobjects.a是否正确构建?如果没有,请检查子目录.pro文件。

根据您发布的内容,我不希望编译任何内容。您需要子目录.pro文件中的目标来构建任何内容。