Xcode 4:如何将静态库目标依赖添加到项目中

Posted

技术标签:

【中文标题】Xcode 4:如何将静态库目标依赖添加到项目中【英文标题】:Xcode 4: How to Add Static Library Target Dependency to Project 【发布时间】:2011-05-13 02:12:16 【问题描述】:

我知道,这已经被问过几次了,但主要是针对 Xcode 3.x。对于 iPad,我有两个项目都生活在一个公共工作区中

Foo,一个基于视图的应用程序和 Foolib,一个静态 Cocoa-Touch 库

前者取决于后者。我似乎无法弄清楚如何添加该依赖项。文档中没有很好地解释,所以我尝试了以下方法:

    点击左侧导航区的Foo项目, 在顶部选择 Build Phases 并展开 Target Dependencies 部分 单击加号按钮,但结果列表为空。

我也尝试将 .a 文件拖放到该部分,但收效甚微。此外,文档状态

如果工作区中一个项目的构建产品依赖于工作区中另一个项目的构建产品(例如,如果一个项目构建了另一个项目使用的库),Xcode 会发现此类隐式依赖关系并构建正确的顺序。

我想知道 Xcode 是如何发现这些依赖关系的。 Apple 是不是说我根本不需要添加这个目标依赖项?但是 Xcode 怎么会发现其中一个正在使用另一个呢?

最后但同样重要的是,我需要以某种方式将 .h 文件从 Foolib 获取到 Foo。推荐的方法是什么?显然,我不想只是复制它们。框架包含头文件,但人们在使用他们自己并行开发的静态库时通常会做什么。

非常感谢您朝正确的方向轻推。谢谢。

【问题讨论】:

【参考方案1】:

一般来说,Xcode 4 似乎会自动发现依赖关系,正如 Edit Scheme 表所暗示的那样。其他开发人员提到,依赖项不会自动发现,需要明确列出它们:

所以,编辑方案 -> 构建 -> 从您的工作区添加目标。

就静态库头文件而言,Xcode 4 似乎存在问题,至少在代码完成和语法高亮方面。我可以让静态库中的类正常工作的唯一方法是将有问题的头文件的副本拖到主项目中的组文件夹中的某个位置。请注意,您应该取消选中 Add to Target... 这会处理语法突出显示和代码完成。其余的应该通过给它正确的标题搜索路径来处理。这将是 User Header Search Paths = $(BUILT_PRODUCTS_DIR) - 取决于您设置位置首选项的方式。

见:this link

【讨论】:

谢谢你。因此,将 Target 添加到 Scheme 会使 Xcode 在 Foo 之前构建 Foolib,对吗?但似乎我还必须以某种方式将 libFoolib.a 放入我的 Foo 项目中,否则,我会收到链接器错误,对吧?目前我什至无法构建 Foolib;好吧,它构建成功,但是 Products 组中的 libFoolib.a 仍然是红色的。知道那里发生了什么吗? 我遇到了架构 AMR 或 i386 的问题,具体取决于在设备或模拟器上运行。也许这是你的问题(当你在一个架构上编译静态库时,使用这个库的项目试图与具有不同架构的库链接......) @MPenades 是的)您实际上需要阅读有关 通用库 的信息,请查看此 tut。 raywenderlich.com/41377/…

以上是关于Xcode 4:如何将静态库目标依赖添加到项目中的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 4.1 没有为 BCTabBarViewController 添加库

如何在静态库项目中使用 XCode 性能工具?

Xcode:将静态库目标复制到新项目

如何在Xcode中使用静态库

在 Xcode 4 中将静态库链接到 iOS 项目

如何将 .a C 静态库添加到 Xcode 并在那里使用它? [复制]