在 bundle 中嵌入一个框架并 link 它
embed a framework in bundle and link it
我有一个 MacOS 应用程序,我在 "embedded binaries" 中添加了一个框架(我们称之为 A.framework
,这是一个文件夹),它也显示在 "Linked Frameworks and libraries" 中。项目编译并且 运行 没问题。
但是当我将应用程序包复制到另一台 MacBook 时,它没有 运行 并告诉我它找不到要加载的第二个框架(我们称之为 B.framework
)。 A.framework
使用绝对路径链接到 B.framework
,所以即使我更改了 A.framework
的安装名称,它仍然会使用绝对路径查找 B.framework
。我有办法在 A.framework
中更改此设置吗?我没有 A.framework
.
的源代码
我在二进制文件上使用了 otool
工具,发现它没有链接捆绑包中的框架(捆绑包中嵌入了框架的副本)。链接器仍然指向通过 "embedded binaries" 路径复制框架的位置,这是我的开发机器上的绝对路径。
如何让它指向包内的 B.framework
?
谢谢!
在您的开发人员工具中查找 install_tool_path
并将 -change
标志应用到 A.framework
,但我不确定这是否会破坏该框架的代码签名.无论如何,阅读 doc.qt.io/archives/qt-5.11/osx-deployment.html。他们展示了如何使用此工具更改包中的路径。
我有一个 MacOS 应用程序,我在 "embedded binaries" 中添加了一个框架(我们称之为 A.framework
,这是一个文件夹),它也显示在 "Linked Frameworks and libraries" 中。项目编译并且 运行 没问题。
但是当我将应用程序包复制到另一台 MacBook 时,它没有 运行 并告诉我它找不到要加载的第二个框架(我们称之为 B.framework
)。 A.framework
使用绝对路径链接到 B.framework
,所以即使我更改了 A.framework
的安装名称,它仍然会使用绝对路径查找 B.framework
。我有办法在 A.framework
中更改此设置吗?我没有 A.framework
.
我在二进制文件上使用了 otool
工具,发现它没有链接捆绑包中的框架(捆绑包中嵌入了框架的副本)。链接器仍然指向通过 "embedded binaries" 路径复制框架的位置,这是我的开发机器上的绝对路径。
如何让它指向包内的 B.framework
?
谢谢!
在您的开发人员工具中查找 install_tool_path
并将 -change
标志应用到 A.framework
,但我不确定这是否会破坏该框架的代码签名.无论如何,阅读 doc.qt.io/archives/qt-5.11/osx-deployment.html。他们展示了如何使用此工具更改包中的路径。