【问题标题】:Adding a framework to XCode 4向 XCode 4 添加框架
【发布时间】:2011-10-21 19:43:38
【问题描述】:

当然,我在发布我的问题之前进行了研究。

我看了
How to "add existing frameworks" in Xcode 4?
Adding Framework in Xcode 4
Adding an OpenGL framework in Xcode 4
XCode 4 adding dylib

但整个事情都变得错误了。

我的目标:将(CorePlot)框架添加到 XCode Mac 项目(不是 iPhone)

我的环境:OSX Lion 10.7、SDK Lion、XCode 4.1 (4B110)

我的步骤:

  • 打开 XCode,创建新项目
  • 已将 CorePlot 下载到我的库目录中(如 ~/Applications/LIBS)
  • 打开的项目首选项,通过 (+) 打开的对话框添加框架
  • 添加现有框架(+ 如果需要,将文件复制到目标组)
  • 选择的目录是 ~/Applications/LIBS/CorePlot/Binaries/MacOS/CorePlot.framework/
  • DnD CorePlot 到 Frameworks Group
  • 将 CorePlot 添加到 Build Phases > Link Binary with Libraries

然后运行我的项目

我得到的是这个错误信息:

dyld: Library not loaded: @loader_path/../Frameworks/CorePlot.framework/Versions/A/CorePlot
Referenced from: /Users/username/Library/Developer/Xcode/DerivedData/metralight-hjuvuwlhgohrtdeepvcymnsaxomc/Build/Products/Debug/metralight.app/Contents/MacOS/metralight
Reason: image not found

事实上,当我查看给定目录(应用程序包)时,没有目录Frameworks,因此链接无法成功

我又搜索了一个,发现我可以创建Build Rule 并通过一些脚本将文件复制到最终的二进制包中,但这是唯一的方法吗?

是否有一些选项可以打开/关闭将链接的框架复制到最终包?

请注意,CorePlot 目标“.framework”将Dynamic Library Install Name 设置为@loader_path/../Frameworks/CorePlot.framework/Versions/A/CorePlot,因此它在最终二进制包中的位置正确

【问题讨论】:

    标签: objective-c xcode frameworks build-automation


    【解决方案1】:

    通过“添加现有框架”添加框架后

    • 转到Project Settings > Build Phases
    • 在右下角点击Add buid phase > Copy Files
    • 选择目的地 > Frameworks
    • 将框架拖放到文件列表中

    就是这样。

    【讨论】:

    • 我这样搞定了,不需要通过“添加现有框架”添加文件
    • 谢谢你!谢!谢! +1
    【解决方案2】:

    这里的另一个重要细节 - 您必须在项目中定义“运行时搜索路径”,默认情况下它是空的。

    类似这样的:

    LD_RUNPATH_SEARCH_PATHS = @loader_path/../Frameworks
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 2011-10-06
      • 2011-03-23
      • 1970-01-01
      相关资源
      最近更新 更多