0%

编译Qt MQTT和Qt WebEngine模块

机缘巧合,最近又捡起了Qt,发现最新的Qt(5.11.2)已经有官方的MQTT支持了,之前用过第三方的qmqtt总感觉API比较别扭。 web引擎也终于从兼容性很差的QWebkit换成了Chromium (Qt WebEngine),当时因为QWebkit渲染出来的网页实在没法看,所以用了封装了CEF(Chromium Embedded Framework)的qcef,现在终于有官方支持的Chromium引擎了。 不过不能高兴得太早,Qt MQTT需要商业授权才会在安装包中出现相关选项,Qt WebEngine在安装包中也只附带了64位的版本。 看来全都只能自己编译了,下面记录下编译过程。

开发环境

Windows 10 + VS 2017 + Qt 5.11.2

VS 2017

地址: http://msdn.itellyou.cn/,下载Visual Studio Professional 2017 (version 15.7)在线安装程序。 安装时主界面选择C++开发,右侧再额外加上“对C++的Windows XP支持”即可。

CDB

Qt需要额外的调试器CDB才能正常调试,可以网上找单独的安装包,微软官方方案是使用Windows 10 SDK在线安装程序,只勾选 “Debugging Tools for Windows”安装即可。

Qt 5.11.2

地址: http://download.qt.io/official_releases/qt/5.11/5.11.2/ ,下载 qt-opensource-windows-x86-5.11.2.exe。 安装时:

  • 需要注册/登录 Qt账号,安装程序会根据账号自动判断商业授权/社区版,两者可安装的组件有所区别。
  • 选择msvc2015 32bit, 因为VS2017的核心还是VS2015所以是可以兼容的。 选
  • 勾选"Sources",待会要编译要用。
  • 勾选"Qt WebEngine",虽然这里勾选了并没有什么用,因为安装包只提供了msvc2017 64bit版本的Qt WebEngine.

编译安装过程

Qt MQTT

Qt 5.10开始Qt官方提供了MQTT组件,但整合在了“Qt for Automation”组件中, 但需要商业授权的账号在安装Qt时才有该组件可选择。

因此只能下载源码自己编译安装了: https://github.com/qt/qtmqtt ,注意切换分支到 5.11.2 。 编译安装流程:

  • 本地先安装perl(>=5.14) 并确保添加到了环境变量中, Python(>=2.7.x)并确保添加到了环境变量中。
  • 将qt的可执行程序目录(如E:\Qt\Qt5.11.2\5.11.2\msvc2015\bin\)添加到环境变量方便接下来操作。
  • 在开始菜单中找到VS2017的菜单目录,找到并打开"适用于VS 2017的x86本机工具命令提示"。
  • vs命令行工具cd到qtmqtt的源码目录。
  • vs命令行工具依次执行 qmake, nmake, nmake install 即可。

Qt WebEngine

虽然Qt安装时可以选"Qt WebEngine"模块,但提示中说了只对应VS2017 64bit版本的Qt。 因此又只能自己编译安装了,源码在安装Qt时已经安装了。 编译安装流程:

  • 本地先安装perl(>=5.14) 并确保添加到了环境变量中, Python(>=2.7.x)并确保添加到了环境变量中。
  • 下载Gperf 安装并添加到环境变量。
  • 下载Win flex-bison ,解压后将win-bison.exe重命名为bison.exe,win-flex.exe重命名为flex.exe,然后添加到环境变量中。
  • 下载jom ,解压后添加到环境变量 (其实直接用Qt Creator自带的也行,将其路径如 E:\Qt\Qt5.11.2\Tools\QtCreator\bin 添加到环境变量即可)。 下面将使用jom来替代nmake。
  • 将qt的可执行程序目录(如E:\Qt\Qt5.11.2\5.11.2\msvc2015\bin\)添加到环境变量方便接下来操作。
  • 在开始菜单中找到VS2017的菜单目录,找到并打开"适用于VS 2017的x86本机工具命令提示"。
  • vs命令行工具cd到qtwebengine的源码目录,如E:\Qt\Qt5.11.2\5.11.2\Src\qtwebengine。
  • vs命令行工具中执行 qmake, 若没有问题会提示: Qt is now configured for building. Just run 'nmake'.
  • vs命令行工具中执行 jom, 这一步可能耗时约数小时,消耗硬盘约50G。 这里不要按上一步的提示使用nmake,否则在编译到一半的时候会报错,使用jom则可以完成编译。
  • 编译结束后执行 nmake install 即可。

注: qmake执行结束后,在 "Qt is now configured for building" 的提示下面,还有 "You should NOT run 'nmake install'" 及 "Note that this build cannot be deployed to other machines or devices" 的提示,这两个提示应该都是错误的,仅适用于编译QtBase的时候。