2010-05-07 55 views
0

我一直在尝试从大学教科书中获得一个死锁的简单列表,以便用我昨晚下载的最新的Windows版QT SDK进行编译。在通过常规的废话(没有make.bat,需要手动添加环境变量等等)之后,我终于到了可以构建的地步。但是这两个图书馆中只有一个似乎有效。QT4的基本编译问题

的.pro文件我用的是死的简单:

SUBDIRS += utils \ 
      dataobjects 

TEMPLATE = subdirs 

在这些两个子文件夹我有一个库源。运行QMAKE生成生成文件并运行在所有的预赛做运行,然后在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。我试图弄清楚为什么会发生这种情况,但没有用。

任何人都有一个想法是怎么回事?

+1

在GCC中,为libname使用-lname并省略“lib”部分是标准的 – 2010-05-07 05:33:10

+0

如果您自动生成Makefile,那么如果只删除-lutils部分会发生什么? (通过编辑生成文件) – 2010-05-07 05:34:14

+0

您的.pro文件只是说有两个子目录utils和数据对象,它们每个都包含自己的.pro文件以及有关如何构建其内容的信息。您还应该提供这些.pro文件以获得有意义的答案。 – VestniK 2010-05-07 07:44:36

回答

0

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

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

随着你的发布,我不会期望任何东西编译。您需要在子目录.pro文件中创建任何目标。

+0

这让我走上了正确的道路,谢谢! – 2010-06-08 17:54:22

0

它们似乎是另一个pro文件,因为生成的Makefile正在拉取它默认不会执行的QtXml。

请检查子目录任何的.pro或.pri文件..其中一人将有答案,你的困惑