在OS X和Linux上部署QT应用程序

4
什么是部署QT应用程序的最佳方式?我已经阅读了托尔克科技公司提供的文档,但是使用静态库还是动态库并让用户安装框架更好呢?我不想让任何人下载一个160MB的框架来运行简单的图形用户界面。
3个回答

4
在 OS X 上,使用 macdeployqt 工具进行动态构建并对生成的 ".app" 进行后期处理是一个不错的方法,该工具从 Qt 4.5 开始自带。
这将把应用程序使用的 Qt 框架复制到应用程序包中,导致打包比静态版本的应用程序更大。
以下是确保在动态构建中获得最小文件大小的步骤:
- 首先确保只包括您需要的内容(在 project.pro 文件的 QT += core gui network xml 行中)。 - 打开应用程序包并从包中删除任何不需要的 "Qt 插件"。 macdeployqt 自动复制 所有 Qt 插件,这可能会导致包变得庞大。 - 确保以 发布 模式构建应用程序。否则,您的应用程序可能会链接到 Qt4 框架的 调试库,它们非常大(例如,调试库超过 90 MB,而没有调试符号的发布变体仅为 16 MB)。这可能是您的情况。 - 如果您有一个较大的应用程序二进制文件,可以使用 UPX 压缩可执行文件,压缩率可达 40-50%。 除此之外,您应该使用压缩的磁盘映像来部署您的应用程序。
我的一个项目使用 QtGuiQtNetworkQtCoreQtXml,生成的包大小约为 16 MB。
希望这可以帮助到您。

2
很遗憾,您需要将所需的Qt库包含在自己的捆绑包中,因为您不能期望您的用户在Mac上安装了Qt(而在Linux打包系统中,您可以要求至少有一个给定版本的Qt)。
有一个很好的工具可以帮助您完成这项工作,它被称为macdeployqt。您只需在捆绑应用程序上调用它,它就会打包所需的库,并更改您的二进制链接以引用它们。没有它,为Mac创建捆绑包是真正的痛苦(尽管仍然如此,但程度要小得多)。
之后,您可以像处理任何其他应用程序一样制作.dmg映像。macdeployqt中有一个选项可以构建基本映像。 http://doc.trolltech.com/4.6/deployment-mac.html#the-mac-deployment-tool

2
在Linux上,最好依赖于操作系统自带的Qt副本,因为它几乎肯定已安装 - 对于OS X,几乎所有应用程序都使用静态编译的库。

我不同意,大多数Mac OS X应用程序都在应用程序包中包含框架。 - Kamil Klimek
@Kamil True - 但是*不好的想法是尝试在整个系统中安装框架;这只是Windows / Linux方式之间的差异。 - Ana Betts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接