macdeployqt 在 homebrew 安装的框架上

Posted

技术标签:

【中文标题】macdeployqt 在 homebrew 安装的框架上【英文标题】:macdeployqt on homebrew installed frameworks 【发布时间】:2011-02-10 11:16:40 【问题描述】:

我正在尝试使用 macdeployqt 部署应用程序。所有 Qt 框架都被正确复制到应用程序包中。我遇到的问题是 macdeployqt 对最初驻留在 /usr/local/lib 中的复制框架没有写权限。这是因为我已经使用自制软件安装了 qt,这似乎使安装所有内容都是只读的。我的问题是是否有更好的方法来解决此问题,然后手动更改 /usr/local/lib 中 qt 库的所有权限,以便我可以在 qt .pro 项目中使用 macdeployqt。 (我不想通过 sudo 等手动使用 macdeployqt)

我问的原因是因为我在项目中使用了许多第三方库(它们被复制好了等),我需要经常通过自制软件更新这些库,因此必须重新更改它们的权限。

提前致谢!

【问题讨论】:

我的 Qt 框架库都归我的本地用户和组所有。我建议您将其更改为相同并完成它,因为我从来没有遇到过任何问题。 @Merlin069,我也遇到了同样的问题,你找到答案了吗? 如果您的应用程序依赖于自制软件,并且它安装了 qt,您为什么要担心将依赖项复制到您的 .app 中?他们不应该首先通过自制软件安装来解决吗? 【参考方案1】:

以防万一有人发现这篇旧帖子正在寻找有关 macdeployqt 的信息:

使用脚本执行 macdeployqt,而不是在 .pro 文件中编写 macdeployqt 命令的脚本。这将允许您动态更改文件的权限。

这是我用于我的一个应用程序的 [a sn-p of] 脚本:

https://bugreports.qt-project.org/browse/QTBUG-23268

如果您在 Windows 上并且没有 bash,则可以使用 perl 或 python。上面引用的脚本会即时修改文件以解决错误 - 您可以在此处放置您想要的任何内容,包括更改文件的权限。

使用脚本还意味着您可以灵活地在以后添加命令来执行代码签名、打包或其他任何您需要的操作。

Qt .pro“脚本语言”实际上会在后台生成 Makefile 命令,如果您想完成与路径和文件集相关的部署任务,可能会非常模糊。

您还需要创建一个额外的目标或将其包含到您的构建目标中 - 无论哪种方式,构建过程都会变得更加复杂且更容易出错。

免责声明:我在 Qt 上工作了 8 年,在 Nokia/Trolltech 担任高级工程师,并且还使用 Qt 发布了一个商业跨平台应用程序。

【讨论】:

链接bugreports.qt-project.org/browse/QTBUG-23268已损坏。

以上是关于macdeployqt 在 homebrew 安装的框架上的主要内容,如果未能解决你的问题,请参考以下文章

捆绑应用程序中的 dylib 和框架

如何在 Qt 5.4.1 中使用 macdeployqt -codesign 选项

macdeployqt 不复制插件

Qt 5.3.1:macdeployqt 尝试包含我硬盘上的所有内容;怎么修?

使用 macdeployqt 构建 QSqlDatabase 的 Qt 应用程序无法正常工作

QT Quick (QML) assemble mac-.bundle -> 使用 macdeployqt 时不是动态库错误