编辑:使用Qt 5.9.1,与Homebrew一起安装

在此other question中的注释之后,我们试图使用macdeployqt来准备基于Qt的应用程序的OSX软件包的分发。

该工具可以正确复制 bundle 软件中的所有Qt依赖项(甚至包括一些非Qt库)。它还会在应用程序本身和复制的库中更改从属库名称。

它还成功复制了QtWebEngineCore.framework的Helpers文件夹中包含的QtWebEngineProcess.app。

问题

一个问题是它没有更改 QtWebEngineProcess中的依赖库名称,因此该包是不可重定位的(因为QtWebEngineProcess通过仅在开发计算机上有效的绝对路径引用其依赖库)。
尝试在“客户端”计算机上运行该应用程序时,将出现以下错误:



我们尝试通过编辑QtWebEngineProcess来手动修复此应用程序,以@loader_path/../../../../../../../../Frameworks/替换Qt库路径的绝对部分。

这只会使问题向前发展:现在QtWebEngineProcess似乎可以正确加载其依赖库,但是依赖库本身无法再加载其依赖库,因为其安装名称以 @executable_path 开头,并且QtWebEngineProcess可执行文件与业务可执行文件。因此错误:



使用Qt的Web引擎的应用程序的 macdeployqt 是否损坏?

有没有一种方法可以使它工作而无需手动更改 bundle 软件中的所有Qt安装名称?

最佳答案

在Dmitry对原始问题发表评论之后,我终于花时间测试了OS X的正式发行版Qt 5.9.1,事实证明他是正确的。与Qt的官方二进制文件一起分发的macdeployqt可以很好地处理QtWebEngineProcess.app。

至少在5.9.1中,随Qt的homebrew安装发行的该实用程序版本是伪造的。

09-05 23:38