将dylib路径设置为XCode构建步骤

时间:2010-08-31 10:11:41

标签: cocoa xcode shared-libraries

我有一个Cocoa应用程序作为XCode项目,它具有几个作为dylib目标的补充功能。

当XCode构建项目时,它将所有构建输出放在一个文件夹中:.app包和dylib文件。当从XCode调试器执行时,.app启动。

但我无法从finder启动应用程序。

如何设置XCode以在独立状态下“部署”应用程序?我发现我可以在实际应用二进制文件上使用ld来包含dylib的相对路径:@executable_path/../../mylib.dylib

在每次构建之后运行脚本似乎是错误的:必须有某种方式(我完全缺少)从XCode内部轻松完成这一点 - 它肯定是一个常见的问题吗?


看起来XCode支持在目标信息中使用@executable_path,@ download_path和@rpath>构建>链接>动态库安装名称设置(LD_DYLIB_INSTALL_NAME)设置。

帮助文本说:“在动态库中设置内部”安装路径“(LC_ID_DYLIB)。链接到库的任何客户端都将记录该路径,因为dyld应该找到该库的方式”

这看起来很有希望,但如果我需要将多个路径中的dylib链接到一个公共库,则可用性是一个问题 - 每次相对路径都会不同。


从finder运行我的testapp,我得到以下(相关)错误文本

Dyld Error Message:
  Library not loaded: @executable_path/../../util.dylib
  Referenced from: /Volumes/data/Code/TestApp/build/Debug/TestApp.app/Contents/MacOS/TestApp
  Reason: image not found

util.dylib在/ Volumes / data / Code / TestApp / build / Debug /所以我很困惑:/

1 个答案:

答案 0 :(得分:2)

在构建应用程序时,您应该使用“复制文件”构建阶段将dylib复制到应用程序的包中。您需要将其复制到Frameworks。然后,您可以将安装路径设置为@executable_path/../Frameworks/mylib.dylib