我一直在尝试从大学教科书中获取一个简单的清单,以便使用我昨晚下载的最新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。我试图弄清楚为什么会这样,但无济于事。
任何人都知道发生了什么事?
答案 0 :(得分:0)
它们似乎是另一个专业文件,因为生成的Makefile正在拉动QtXml,默认情况下不会这样做。
请检查子目录中的.pro或.pri文件..其中一个可以解决您的困惑
答案 1 :(得分:0)
您.pro
文件使用SUBDIRS
模板,该模板需要与每个子目录的目录名匹配的.pro文件。您还应该有一个utils\utils.pro
和dataobjects\dataobject.pro
文件。
c:\Users\Cobus\workspace\lib\libdataobjects.a
是否正确构建?如果没有,请检查子目录.pro
文件。
根据您发布的内容,我不希望编译任何内容。您需要子目录.pro
文件中的目标来构建任何内容。