我安装了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也没有自己的配置文件)。
有人经历过这样的行为吗?
答案 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并安装源代码可以解决问题,至少对我而言。