部署 QT 应用程序的最佳方式是什么?我已经阅读了 trolltech 托管的文档,但是与静态库或动态库链接并让用户安装框架更好吗?我真的不希望任何使用我的应用程序的人都必须下载一个 160mb 的框架来运行一个简单的 gui 前端。
3 回答
macdeployqt
在 OS X 上,这是使用 Qt 从 4.5 开始附带的工具进行动态构建和后处理生成的“.app”的好方法。
这会将您的应用程序使用的 Qt 框架复制到应用程序包中,这会产生比构建应用程序的静态版本更大的包。
您可以执行以下操作以确保在动态构建中获得最小的文件大小:
- 首先,确保您只包含您需要的东西(在 project.pro 文件的
QT += core gui network xml
行中)。 - 打开应用程序包并从包中删除任何不需要的“Qt 插件”。
macdeployqt
自动编译那里的所有Qt 插件,这可能有点笨重。 - 确保您在发布模式下构建应用程序。否则,您的应用程序可能会链接到 Qt4 框架的调试库,并且它们确实很大(例如,调试库超过 90 MB,而没有调试符号的发布变体则为 16 MB)。这可能就是您的情况。
- 如果您有一个大型应用程序二进制文件,您可以使用UPX将您的可执行文件压缩 40-50%。
除此之外,您应该使用压缩磁盘映像来部署您的应用程序。
我的一个项目使用QtGui、QtNetwork、QtCore和QtXml,生成的包大小约为 16 MB。
希望有帮助。
在 Linux 上,最好依赖操作系统的 Qt 副本,因为它几乎肯定已安装 - 对于 OS X,几乎所有应用程序都使用静态编译的库。
不幸的是,您必须将所需的 Qt 库包含在自己的包中,因为您不能期望您的用户在 Mac 上安装 Qt(而在 Linux 打包系统上,您至少需要给定版本的 Qt。
有一个很好的工具可以帮助你解决这个问题,它叫做 macdeployqt。您只需要在您的捆绑应用程序上调用它,它就会打包所需的库,更改二进制文件的链接以引用它们。没有它,为 Mac 制作捆绑软件真的很痛苦(现在仍然如此,但要少得多)。
http://doc.trolltech.com/4.6/deployment-mac.html#the-mac-deployment-tool
之后,您可以像使用任何其他应用程序一样制作 .dmg 图像。macdeployqt 中有一个选项可以构建一个基本选项。