Xcode 没有在 @rpath 中搜索动态库?

Xcode not searching @rpath for dylibs?

在我的 Xcode 项目中,我构建了几个动态库,它们的前缀为“@rpath/lib”。我添加了一个包含这些动态库的 "copy files" 构建阶段。它们安装在 Frameworks 中名为 lib 的文件夹中。我还设置了“@loader_path/../Frameworks”的运行路径搜索路径,当可执行文件 运行s 时,应将其替换为 @rpath。 DLYD 查看我的二进制文件的 运行 路径,我在二进制文件上使用 tool -l 命令检查了该路径。这会产生:

Load command 47
          cmd LC_RPATH
      cmdsize 40
         path @loader_path/../Frameworks (offset 12)

所以我假设当我的二进制文件 运行s 时,DLYD 将通过 MACH-O 二进制文件解析 lib 文件夹的路径。

当我 运行 我的项目时,我使用 Activity 监视器来检查二进制文件打开的文件。我没有看到我的动态库是从它们所在的 @loaderpath/../Frameworks/lib 引用的,而是我看到它们是从 /usr/local/lib 引用的。

我应该设置哪些 Xcode 设置才能正确找到我的动态库?我使用用户定义的构建设置 'DYLD_PRINT_BINDINGS' 查看正在链接的内容,但我没有看到我的库被链接,即使它们最终链接到 /usr/local/lib

中的库

我找到了我前一段时间开发的脚本,我曾经将 .dylibs 复制到 .appFramework 目录并检测依赖库,修复库引用使用 install_name_tool。这应该设置为 post-build 脚本。

https://github.com/trojanfoe/xcodedevtools/blob/master/copy_dylibs.py

好久没测试了。根据我的 this question

,该存储库还包含我现在用来 增加版本号 的脚本。