编辑:使用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
安装发行的该实用程序版本是伪造的。