仅包含带有程序的最小 Qt 库

Posted

技术标签:

【中文标题】仅包含带有程序的最小 Qt 库【英文标题】:Including only minimal Qt library with a program 【发布时间】:2014-02-02 18:50:50 【问题描述】:

我有一个单独的 PyQt 程序,它只有大约 9MB。这不是什么大问题,只是与之相结合的 Qt 依赖项接近 100MB。

所以我的问题是,是否有任何合乎逻辑且安全的方式来仅包含我可以包含在我的包中的 Qt 库的一部分,然后不再将 Qt 作为依赖项包含在内,或者是一个较小的替代庞大 Qt 库的替代方案,它仍然会与我的代码兼容吗?

【问题讨论】:

您可能想尝试构建 static Qt 库并与它们链接。然后,您不必将 Qt 作为依赖项包含在内。我不知道它是否会显着减小您的包裹尺寸。 我同意 n.m.另外,您是否正在构建调试二进制文件?调试库比发布库大得多。 @TonyK 不,我不是在调试模式下构建库。 @n.m.如果我将它们作为静态库包含在包中,我可以运行并删除所有我没有使用的代码吗?这肯定会降低包的大小,但我不确定这是否会使 GUI 不稳定。 与静态库的链接自动仅包含引用的代码,具有目标文件的粒度级别。 【参考方案1】:

我想不出一种方法来做你想做的事,但如果你使用的是标准的 PyQt 发行版,标准做法是让用户自行下载和安装依赖项。这可以通过在您的 ISO 中包含一个安装脚本部分来自动化,该脚本确定是否需要 pyqt,如果不可用,则从您的站点获取 pyqt 并安装它,或者自动从河岸站点下载源代码并尝试自动构建。

【讨论】:

它现在被列为依赖项,但这就​​是问题所在。该程序已包含在发行版的 ISO 中,但它们的某些版本本身并不运行 QT,而是运行 GTK,因此添加我的程序将吸收所有 QT 依赖项,这会将 ISO 的大小提高 100MB+

以上是关于仅包含带有程序的最小 Qt 库的主要内容,如果未能解决你的问题,请参考以下文章

PyQt - QWidget - 仅显示标题栏

Qt 最小部署

Qt/QML:带有 Keys.onPressed 的 TextInput 仅接收 DEL 键而不接收其他键

如何隐藏在 Qt 应用程序中打开的 Windows 终端?

构建一个最小的 Qt 控制台项目失败,出现一个神秘的链接器错误 LNK2001: Unresolved external Symbol

生成仅包含使用的类的最小化 jar