0

我一直在尝试从大学教科书中获取一个简单的列表,以使用我昨晚下载的最新 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。我试图弄清楚为什么会发生这种情况,但无济于事。

有人知道发生了什么吗?

4

2 回答 2

0

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

请检查任何 .pro 或 .pri 文件的子目录.. 其中一个将回答您的困惑

于 2010-05-07T15:07:49.460 回答
0

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

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

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

于 2010-05-07T16:08:11.217 回答