Deploying Qt Applications

部署 Qt 应用程序不需要编写 C++ 代码. 你所需要做的就是按照本文档中描述过程, 在发布模式下构建 Qt 和你的应用程序。.

Static vs. Shared Libraries

部署应用程序有两种方式:

  • 静态链接
  • 共享库 (Mac 上的 Framework)

静态链接产生独立的可执行文件. 优点是你只需部署几个文件. 缺点是可执行文件很大并且没有灵活性 (即新版本的应用程序或 Qt, 将需要重复部署过程), 并且无法部署插件.

要部署基于插件的应用程序, 你可以使用共享库方法. 共享库还提供更小, 更灵活的可执行程序. 例如, 使用共享库方法, 用户可以独立升级应用程序使用的Qt库.

你可能想要使用共享库方法的另一个原因是, 你想对一系列应用程序使用相同的 Qt 库. 事实上, 如果你下载 Qt 的二进制安装包, 你将获得 Qt 作为共享库.

共享库方法的缺点是你将需要部署更多文件. 详见 Creating Shared Libraries.

Deploying Qt's Libraries

除非 Qt 是系统库的一部分, 否则你必须将 Qt 与你的应用程序一起发布. 最低限度是包含应用程序使用的运行时库. 然而, 使用静态链接库, Qt的运行时库将在编译时包含到可执行程序文件.

一般来说, 你应该部署 Qt 构建使用的所有插件, 不包含你认为对应用程序及用户无用的插件.

例如, 你可能需要部署支持 JPEG 格式和 SQL 驱动程序的插件, 但是你还应该部署用户可能需要的插件, 包括可访问性插件. 详见 How to Create Qt Plugins.

使用 Qt QML 的应用程序还需要提供它们使用的 QML modules 模块.

使用共享库方法部署应用程序时, 必须确保 Qt 库使用正确的路径来查找 Qt 插件, 文档, 翻译等. 为此, 你可以使用 qt.conf 文件. 详见 Using qt.conf.

根据配置, 你还必须包含特定于编译器的库. 详见 X11, Windows, macOS.

Licensing

Qt 的一些库基于第三方库实现, 这些库未使用与 Qt 相同的双许可协议. 因此, 在部署使用这些库时, 你必须特别小心, 尤其是应用程序静态链接它们时. 详见 Third-Party Licenses Used in Qt.

QtNetwork 的某些配置在运行时使用 OpenSSL. OpenSSL 库的部署受到许可和出口限制, 详见 Secure Sockets Layer (SSL) Classes.

Platform-Specific Notes

对于不同的平台, Qt 应用程序的部署过程是不同的:

参见 Deploying Translations.