编辑:使用 Qt 5.9.1,与 Homebrew 一起安装
在对这个其他问题发表评论之后,我们正在尝试使用macdeployqt
来准备基于 Qt 的应用程序的 OSX 捆绑包的分发。
该工具正确地复制了捆绑包中的所有 Qt 依赖项(甚至一些非 Qt 库)。它还会更改应用程序本身和复制的库中的依赖库名称。
它还成功复制了QtWebEngineCore.framework的Helpers文件夹中包含的QtWebEngineProcess.app。
问题
一个问题是它没有更改 QtWebEngineProcess 中的依赖库名称, 因此捆绑包不可重定位(因为QtWebEngineProcess通过仅在开发机器上有效的绝对路径引用其依赖库)。试图在“客户端”机器上运行该应用程序,因此会出现错误:
dyld:库未加载:/usr/local/Cellar/qt/5.9.1/lib/QtWebEngineCore.framework/Versions/5/QtWebEngineCore 引用自:Business.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app /内容/MacOS/QtWebEngineProcess
我们尝试手动修复此应用程序,方法是编辑 QtWebEngineProcess 以将 Qt 库路径的绝对部分替换为@loader_path/../../../../../../../../Frameworks/
.
这只会使问题向前发展:现在QtWebEngineProcess似乎可以正确加载其依赖库,但依赖库本身无法再加载其依赖库,因为它们的安装名称以@executable_path 开头,并且QtWebEngineProcess可执行文件位于与Business可执行文件不同的文件夹中. 因此错误:
dyld:库未加载:@executable_path/../Frameworks/QtQuick.framework/Versions/5/QtQuick
引用自:Business.app/Contents/Frameworks/QtWebEngineCore.framework/Versions/5/QtWebEngineCore
当涉及到使用 Qt 的 Web 引擎的应用程序时,macdeployqt是否损坏?
有没有办法让它工作而无需手动重新更改捆绑包中的所有 Qt 安装名称?