【问题标题】:Building QT for msvc2015 - and get working projects?为 msvc2015 构建 QT - 并获得工作项目?
【发布时间】:2016-01-04 22:33:58
【问题描述】:

这里已经有一个相当相关的question (rq),但它不够专业,而且我的声誉也不够高,无法在 cmets 寻求更多建议……然而,时间不多了,我必须得到某处。 一旦原始问题得到回答,这个问题可以而且应该被删除。

我想要什么: 在 Visual Studio 2015 中工作,使用 qt 库。就是这样。

我做了什么:

  • 安装 vs2015,工作正常
  • 下载 qt5.5.0 源代码,按照 (rq) 指令使用 jom 构建它(nmake 工作相同,只是速度较慢)
  • 安装vs2015的qt包扩展,同样关注(rq)

第一个错误:构建过程没有创建任何 mkspecs,所以我无法在 Visual Studio 的 QT 选项中设置目录:“这个 QT 版本使用了不受支持的 makefile 生成器(使用:,支持:MSVN.NET、MSBUILD)"

  • 我尝试通过将其替换为已安装版本的 mkspec 文件夹来破解它,以便能够在 Qt 选项中选择 qtbase 文件夹。
  • 使用库目录、包含目录和 VS 项目的附加依赖项。无论我做什么,都找不到包含文件。

由于没有成功,我使用安装程序安装了 qt 5.5.0 mingw492_32。使用它,我能够使用 QTCreator 创建一个新项目。它在 QTCreator 中编译。之后我执行了

qmake -platform win32-msvc2015 -tp vs

将项目转换为 Visual-Studio-项目,而 qmake 是以前 BUILT 版本的可执行文件,而不是已安装的,包含文件在 Visual Studio 中仍然找不到。

我做错了什么?库目录、包含目录和附加依赖项在转换后的项目中对我来说很好。


编辑 1: 我关注了walkthrough,一切都成功构建了。然而,mkspecs 文件夹仍然是空的。使用 Qt Creator 创建 Qt-Widget 应用程序最终会导致应用程序崩溃(未对默认代码进行任何更改):

Second Chance Assertion Failed: File minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp, Line 980

打电话

qmake -platform win32-msvc2015 -tp vs

也不成功:

qmake -platform win32-msvc2015 -tp vs
WARNING: Unable to generate output for: D:/_Daten/_Studium/Bachelor-Thesis/Visual-Studio/VISAR-FSA/GuiTest/Makefile.Debug [TEMPLATE vsapp]
WARNING: Unable to generate output for: D:/_Daten/_Studium/Bachelor-Thesis/Visual-Studio/VISAR-FSA/GuiTest/Makefile.Release [TEMPLATE vsapp]

编辑 2:

关于 mkspecs:结果我不得不同时调用:

jom -j 8
jom install

现在所有 mkspec 都已创建。官方文档让我认为第二个只是在设置目标路径时构建的一个选项。 然而,在 Qt Creator 中新创建的 Qt Widget 应用程序,带有内置和安装的 QT 版本和正确的编译器,仍然无法编译。 [qtmain.lib(qtmain_win.obj)] 中出现 LNK2019,告诉我函数“_WinMain@16”中有符号“__imp__CommandLineToArgvW@8”的链接,但未解决。

【问题讨论】:

标签: c++ visual-studio qt visual-studio-2015 qt5


【解决方案1】:

【讨论】:

  • Qt 版本是完全隔离的。您应该从不将任何 Qt 版本添加到任何全局环境变量中。卸载以前的 Qt 版本是没有意义的:在正常的开发中,您将同时安装多个版本。一切正常。
  • 感谢您的回复,但该演练现在对我没有帮助...更新问题
【解决方案2】:

我已经为 VS2015 和 VS2013 以及 5.50 及更高版本构建了 Qt,它不需要任何特别的东西就可以成功构建。我倾向于使用@jafar 提到的简化版演练(也更接近official docs' 中的方法)

  • 克隆 qt5 存储库或解压缩源代码
  • 启动命令提示符。 重要提示:创建正确的“VS2015 x86 或 x64”提示
  • 不要按照演练中的说明编辑msvc-desktop.conf。 (Qt 不能使用 /MT 标志构建)
  • 运行配置:

    配置 -debug-and-release -opensource -platform win32-msvc2015 -opengl desktop -nomake 示例 -nomake 测试

  • 使用jom -j 8 构建(我发现你会得到递减的收益)或nmake。如果你省略示例和测试,我可以在大约 10-15 分钟内构建整个 qtbase

  • 运行jom installnmake install

【讨论】:

  • 谢谢!我确实不确定我是否使用了正确的提示,因为标题不包含架构 - 我怎么知道? - 另外,您这样做时是否创建了 mkspecs?明天我会再试一次,会告诉你它是否有效。
  • 我在安装目录中有一个 mkspecs 目录,其中包含win32-msvc2015 以及许多其他目录。您可以通过运行 cl 检查您是否有正确的命令提示符 - 它应该是 Microsoft Compiler Version 19.00... for x64(或 x86)
  • 好的,关于缺少的 mkspecs:这是缺少的 jom 安装调用。那个是固定的,非常感谢! - 然而,当创建一个新的 QT 小部件应用程序时,它仍然不会构建:一个 LNK2019 发生在 [qtmaind.lib(qtmain_win.obj)],告诉我函数中有一个指向未解析符号“__imp__CommandLineToArgvW@8”的链接"_WinMain@16" ...
  • 这是一个 Windows API - 将 shell32.lib 添加到您的链接库(请参阅 msdn.microsoft.com/en-us/library/windows/desktop/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 2013-06-22
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多