Qt for WebAssembly

WebAssembly 是允许在网页沙盒执行代码的二进制格式。这种格式几乎和本机代码一样快,且现在所有主流 Web 浏览器都支持。

Qt for WebAssembly 是 平台插件 ,允许构建可以被集成到网页的 Qt 应用程序。它不需要安装任何客户端,并减少服务器端资源的使用率。

Qt for WebAssembly 快速入门

安装 Emscripten

emscripten 是用于编译到 asm.js 和 WebAssembly 的工具链。它使您无需插件按接近本机的速度在 Web 中运行 Qt。

参考 Emscripten 文档编制 了解有关签出 Emscripten SDK 及为您的 Qt 版本安装和激活 Emscripten 的更多信息。

安装后,路径下应该有 Emscripten。采用以下命令校验这:

em++ --version
					

Qt 的每个子版本均支持已知的良好 Emscripten 版本。在 Qt 版本的生命周期内会支持这种 Emscripten 版本。

已知的良好版本:

  • Qt 5.12: 1.38.16
  • Qt 5.13: 1.38.27 (multithreading: 1.38.30)
  • Qt 5.14: 1.38.27 (multithreading: 1.38.30)
  • Qt 5.15: 1.39.8

使用 emsdk 去安装特定 emscripten versions. For example, to install it for Qt 5.15, enter:

  • ./emsdk install 1.39.8
  • ./emsdk activate --embedded 1.39.8

安装后,路径下应该有 Emscripten。采用以下命令校验这:

em++ --version
					

下载二进制

使用 Qt 帐户可以在 Downloads 章节下载二进制构建。

构建 Qt 从源

另外,在 Downloads 章节可以下载 Qt 源代码,然后从它构建 Qt。

把 Qt 配置成交叉编译构建为 wasm-emscripten 平台。这将隐式设置 -static 和 -no-feature-thread 选项。传递 -compile-examples 选项以启用范例。

./configure -xplatform wasm-emscripten -nomake examples -prefix $PWD/qtbase
					

在 Windows,确保您有 MinGW sed 在您的 PATH 并配置如下:

configure -no-warnings-are-errors -xplatform wasm-emscripten -platform win32-g++ -nomake examples -prefix %CD%\qtbase
					

构建所需模块:

make module-qtbase module-qtdeclarative [other modules]
					

Qt 构建是静态构建,且不支持线程。

构建并运行应用程序

$ /path/to/qt-wasm/qtbase/bin/qmake
$ make
					

这生成下列文件:

生成的文件 简要描述
app.html HTML 容器
qtloader.js 用于加载 Qt APP 的 JS API
app.js 用于加载 Qt APP 的 JS API
app.wasm 二进制 Emscripten APP

当部署 APP 时,通常在服务器侧处理压缩。我们推荐压缩 wasm 二进制,因为这通常会将二进制尺寸减少 50%。

测试 运行应用程序

可以按以下方式测试 运行应用程序:

/path/to/emscripten/emrun --browser=firefox appname.html
					

一些范例

局限性

最重要的局限性是 Qt 构建是静态的,且不支持线程。

了解进一步信息,参考 Known_issues_and_platform_notes .

外部资源

许可

Qt for WebAssembly 在商业许可下是可用的来自 Qt 公司 。此外,它是可用的根据 GNU GPL (一般公共许可) 第 3 版 。见 Qt 许可 进一步了解细节。

另请参阅 WebAssembly 资源站点 , Qt for WebAssembly 快速入门 ,和 采用 WebGL 和 WebAssembly 的远程 UI .