【问题标题】:Deploying QT app on OS X and linux在 OS X 和 linux 上部署 QT 应用程序
【发布时间】:2010-01-30 02:35:21
【问题描述】:

部署 QT 应用程序的最佳方式是什么?我已经阅读了 trolltech 托管的文档,但是与静态库或动态库链接并让用户安装框架更好吗?我真的不希望任何使用我的应用程序的人都必须下载一个 160mb 的框架来运行一个简单的 gui 前端。

【问题讨论】:

    标签: qt deployment static-libraries dynamic-linking


    【解决方案1】:

    在 OS X 上,这是使用 Qt 从 4.5 开始附带的 macdeployqt 工具进行动态构建和后处理生成的“.app”的好方法。

    这会将您的应用程序使用的 Qt 框架复制到应用程序包中,这会产生比构建应用程序的静态版本更大的包。

    您可以执行以下操作以确保在动态构建中获得最小的文件大小:

    • 首先,确保只包含您需要的内容(在 project.pro 文件的 QT += core gui network xml 行中)。
    • 打开应用程序包并从包中删除所有不需要的“Qt 插件”。 macdeployqt 自动编译所有其中的 Qt 插件,这可能有点笨重。
    • 确保您在 release 模式下构建应用程序。否则,您的应用程序可能会链接到 Qt4 框架的调试库,并且它们确实很大(例如,调试库超过 90 MB,而 16 MB没有调试符号的发布变体)。这可能就是您的情况。
    • 如果您有一个大型应用程序二进制文件,您可以使用UPX 将您的可执行文件压缩 40-50%。

    除此之外,您应该使用压缩磁盘映像来部署您的应用程序。

    我的一个项目使用 QtGuiQtNetworkQtCoreQtXml,生成的包大约是 16 MB 大小。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      不幸的是,您必须将所需的 Qt 库包含在自己的包中,因为您不能期望您的用户在 Mac 上安装 Qt(而在 Linux 打包系统上,您至少需要给定版本的 Qt。

      有一个很好的工具可以帮助你解决这个问题,它叫做 macdeployqt。您只需要在您的捆绑应用程序上调用它,它就会打包所需的库,更改二进制文件的链接以引用它们。没有它,为 Mac 制作捆绑软件真的很痛苦(现在仍然如此,但要少得多)。

      http://doc.trolltech.com/4.6/deployment-mac.html#the-mac-deployment-tool

      之后,您可以像使用任何其他应用程序一样制作 .dmg 图像。 macdeployqt 中有一个选项可以构建一个基本选项。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我不同意,Mac OS X 上的大多数应用程序都包含应用程序包内的框架
        • @Kamil True - 不是 一个好主意是尝试在系统范围内安装框架;只是 Windows / Linux 方式的区别
        猜你喜欢
        • 2018-02-17
        • 1970-01-01
        • 1970-01-01
        • 2017-06-29
        • 1970-01-01
        • 2011-05-19
        • 2019-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多