在 Mac OSX 上部署 Qt 应用程序时缺少文件

Posted

技术标签:

【中文标题】在 Mac OSX 上部署 Qt 应用程序时缺少文件【英文标题】:Missing file when deploying Qt app on Mac OSX 【发布时间】:2012-06-17 09:50:31 【问题描述】:

我正在尝试在 Mac OSX 上部署 Qt 应用程序,因此我正在运行以下命令:

macdeployqt Example.app

随着可执行文件大小的增加,它似乎主要工作,所以我假设正在添加相关的插件和库。但是,最后macdeployqt 输出了这个错误信息:

ERROR: no file at "/usr/local/pgsql/lib/libpq.5.dylib" 

有人知道这个文件是什么吗?我需要安装一些东西才能让它工作吗?

【问题讨论】:

"'liqpq'" 是 PostgreSQL 库。您是否将其包含在您的项目中?如果是这样,我认为您需要将其复制到您构建的应用程序的包中。 @MichaelDautermann,这很奇怪,我实际上并没有在我的项目中使用 PostgreSQL,只是 SQlite。有什么办法可以消除这种依赖? 【参考方案1】:

文档states:如果应用程序使用 QtSql 模块,则会部署 SQL 驱动程序插件。 macdeployqt 工具不知道您的应用程序使用哪些插件,并尝试部署所有插件。您的应用程序不直接与任何插件链接,因此无法仅通过查看可执行文件来判断它使用了什么。 macdeployqt 工具需要解析您的应用程序的代码,或者使用可能会破坏的启发式方法来扫描 sql 驱动程序名称字符串。这是macdeployqt工具的一个缺点。

临时解决方法是将未使用的插件移出 QtSdk 中的 plugins/sqldrivers 文件夹。

注意:Example.app 不是可执行文件。它是一个应用程序包 - 一个包含内容的文件夹,您可以通过通常的方式检查其内容:从 shell 或通过 Finder 右键单击​​应用程序包。

【讨论】:

我没有自己编译Qt,我只是安装了Qt网站上提供的那个。令我惊讶的是,macdeployqt 尝试将此库添加到包中,但没有它,应用程序也能正常工作。 非常感谢您提供的信息和文档参考。我将尝试从插件目录中删除驱动程序,看看它是否有效。

以上是关于在 Mac OSX 上部署 Qt 应用程序时缺少文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将基于 qt 的应用程序(在 Mac 上开发)部署到 Windows?

在 Mac OSX 上安装 Qt 的调试版本

在 Windows 上部署 Qt 5 应用程序

在 Windows 上部署 Qt 5 应用程序

如何使用 Mac OSX 在 Python 中生成线程和初始化 Qt 应用程序

缺少在 Mac OSX Lion/make 上安装 Qt