Xcode 4:如何为项目添加静态库目标依赖项

问题描述:

我知道,这已被问了几次,但主要是针对Xcode 3.x.对于iPad的,我有两个项目都生活在一个公共工作区Xcode 4:如何为项目添加静态库目标依赖项

  • 富,一个基于视图的应用程序和
  • Foolib,静态可可触摸库

前者取决于后者。我似乎无法解决如何添加该依赖关系。这不是很好的文档中解释说,所以我尝试了以下内容:

  1. 点击在导航区域左侧的富项目,
  2. 选择构建阶段了顶部和扩大目标相关部分
  3. 单击加号按钮,但结果列表为空。

我也尝试将.a文件拖放到该部分,但很少成功。此外,文档指出

如果一个项目的工作空间中的构建产物是依赖于在工作区中的另一个项目的构建产物(例如,如果一个项目建立由其他项目中使用的库), Xcode发现了这种隐式的依赖关系,并以正确的顺序构建。

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

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

在正确的方向微调将不胜感激。谢谢。

一般来说,Xcode 4似乎自动发现编辑方案表暗示的依赖关系。其他开发人员提到,依赖不会自动发现,并且需要明确列出它们:

因此,编辑计划 - >构建 - >从工作空间添加目标。

就静态库头文件而言,Xcode 4似乎有问题,至少在代码完成和语法高亮显示的时候。唯一的方法是,我可以正常使用静态库中的类将相关头文件的副本拖到主项目中的组文件夹中。请注意,您应该取消选中添加到目标...这会照顾语法突出显示和代码完成。剩下的应该通过给它正确的标题搜索路径来处理。这将是用户标题搜索路径= $(BUILT_PRODUCTS_DIR) - 取决于您如何设置您的位置偏好设置。

参见:this link

+1

谢谢你。因此,将Target添加到Scheme中会使Xcode在Foo之前​​构建Foolib,对吧?但似乎我也必须将libFoolib.a以某种方式放入我的Foo项目中,否则,我会收到链接器错误,对不对?目前我甚至无法让Foolib建立;那么它会成功构建,但产品组中的libFoolib.a保持红色。任何想法发生了什么? – McKrassy 2011-05-13 05:48:39

+0

根据设备或仿真器上的运行情况,我遇到了架构AMR或i386的问题。也许这是你的问题(当你在一个架构上编译静态库时,使用这个库的项目试图链接一个具有不同架构的库......) – 2011-08-11 08:31:39

+0

@MPenades yup)你实际上需要阅读** Universal Library **看看这个啧啧。 http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial – Resty 2014-08-26 08:30:39