链接应用程序

时间:2015-08-23 13:56:53

标签: qt-creator qbs

我安装了VS2015和QtCreator 3.5并从源代码编译了Qt5.5,因为二进制发行版不适用于VS2015附带的visual c ++编译器。

我尝试编译我的项目,该项目是使用VS2012 / VS2013的可视化c ++编译器和QtCreator 3.3x与Qt 5.2和Qbs在不同的机器上开发的 - 来自QtCreator,我的新设置既不是QtCreator也不是来自命令行的Qbs能够链接应用程序。

我使用Qbs helloworld示例缩小了问题范围

import qbs

CppApplication {
   type: "application" // To suppress bundle generation on Mac
   consoleApplication: true
   files: "main.cpp"

    Depends {
        name: "Qt"
        submodules: [
            "core"
        ]
    }
}

从命令行使用qbs构建时,它提供以下输出

compiling main.cpp
linking halloqbswelt.exe
ERROR: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.exe /nologo /DEBUG /PDB:halloqbswelt.pdb /OSVERSION:5.02 /SUBSYSTEM:CONSOLE,5.02 /MANIFEST /MANIFESTFILE:D:\projekte\halloqbswelt\Qt5-debug\halloqbswelt.Qt5.842abbdf\intermediate.halloqbswelt.exe.manifest D:\projekte\halloqbswelt\Qt5-debug\halloqbswelt.Qt5.842abbdf\.obj\3a52ce780950d4d9\main.cpp.obj .lib /OUT:D:\projekte\halloqbswelt\Qt5-debug\halloqbswelt.Qt5.842abbdf\intermediate.halloqbswelt.exe /LIBPATH:D:\projekte\3rd_party\qt\qtbase\lib
LINK : fatal error LNK1104: cannot open file '.lib'
ERROR: Process failed with exit code 1104.
The following products could not be built for configuration Qt5-debug:
    halloqbswelt

相当神秘,所以我将从上面的输出中突出显示问题

[...] .obj\3a52ce780950d4d9\main.cpp.obj .lib /OUT: [...]

所以空的.lib文件就是问题所在。

将链接器语句与来自其他计算机的语句进行比较,空的.lib位于Qt5Core.lib所在的相同位置。 因此试图调查为什么Qbs无法解决这些路径;我查看了core.qbs模块,但找不到与工作设置的机器上的文件有什么不同。 最后,我决定重新编译Qt库并从头开始设置Qbs / QtCreator配置文件。完成并且有效,直到我重新启动QtCreator,现在两者都没有(Qbs来自命令行,QtCreator也没有自己的配置文件)。

有人经历过这样的行为吗?

1 个答案:

答案 0 :(得分:0)

如评论所述,http://article.gmane.org/gmane.comp.lib.qt.qbs/682给了我正确的起点。

Qbs依赖于构建依赖关系的每个子模块的pri / prl文件(据我所知)。在非前缀环境(这是Windows下的默认设置)(https://bugreports.qt.io/browse/QTBUG-42959)中安装从源构建的Qt时,会覆盖这些pri文件或发生其他一些不良事件。

因此,使用前缀构建Qt并安装源代码可以解决问题,至少对我而言。