在Xcode4使用开源的静态库

Xcode的4.0.1使我们能够更容易地创建和使用在iOS项目第三方库。但是我觉得这个过程仍然是复杂的,需要说明 Xcode的文件表明,它会自动检测隐式依赖关系工作区之间指数我还没有发现这是此案这里我将介绍发现项目之间以及与其他开发人员代码,用于创建和共享步骤

  1. 背景
  2. 如何静态库
  3. 创建一个静态库
  4. 未来的改进
背景

工作区:

Xcode的4引入了多个项目容器的工作区概念有许多组合选择如何共享整个项目代码我们所要建设工作区,其中关键行为

默认情况下,一个工作区中的所有Xcode项目在同一目录中统称工作区建立目录
Xcode的构建目录中文件检查发现隐式依赖
在工作区中每个项目继续拥有自己独立的身份

计划

工作区在一个项目中这是我们计划的工作区成员计划取代活动目标构建的Xcode3配置,并可执行设置定义目标,以建立建立的顺序,以及采取何种行动构建完成我们想要我们共享代码轻松地安装到使用它任何项目计划在Xcode4过渡指南涵盖更详细新结构

 
  目标:

计划 我们 一个或多个 建设 目标, 定义一个 源文件的 建立 用来建立 这些文件 的设置 任何 其他目标 必须完成 的第一批产品 依赖 最终 我们希望 我们的代码 消费者 状态 他们的项目 建设 目标 取决于 我们 共享代码 Xcode中 建立 这个 共享代码 使其可 积极 构建目标 我们可以通过 提供 一个 项目,其中包含 要共享 代码和 静态库 建设 的目标, 到构建 产品 其他开发人员可以 添加 作为构建 目标依赖

使用静态库
  • 创建工作将项目添加到一个工作区
  • 新增建设目标的依赖关系
  • 添加静态库
  • 配置项目的计划
  • 固定索引


    创建工作

    Xcode的文件菜单中我们可以创建一个新的空工作打开一个现有项目选择另存为工作区... ...”创建一个新的工作区包含我们的项目这将创建一个“。xcworkspace中的文件系统

    在Xcode4使用开源的静态库_第1张图片
    一个空Xcode4工作区
  将项目添加到 一个工作区

一旦 我们有一个 工作 我们可以 工作区 的Navigator 右键单击 创建一个新的 项目 或增加 现有的“ xcodeproj ”包
在Xcode4使用开源的静态库_第2张图片

添加一个新的项目工作区

在Xcode4使用开源的静态库_第3张图片

我们要结束一个单一的包含任何静态库我们将依赖于我们的应用程序项目项目工作区值得注意这些项目都是在工作区中所有兄弟姐妹我们静态库没有增加一条,作为我们的应用程序项目引用


新增建设目标的依赖关系

所有的项目我们需要我们的工作区我们可以选择我们的应用程序构建目标添加一个静态链接的二进制库”建设阶段

在Xcode4使用开源的静态库_第4张图片
添加与库链接二进制库和框架构建阶段

在Xcode4使用开源的静态库_第5张图片
静态库添加到链接二进制使用库建设阶段

 
 
添加静态库

我们还需要确保我们的应用程序构建目标可以找到这个静态库使用公共打开生成设置”选项卡找到用户头搜索路径设置设置这个“$BUILT_PRODUCTS_DIR”(“$BUILT_PRODUCTS_DIR/static_library_name如果我们要更具体我们将更新此设置我们每次添加另一个库,并检查“递归”检查框。现在我们目标将搜索共享我们工作区建立目录找到可连接头文件

在Xcode4使用开源的静态库_第6张图片
设置用户头搜索路径

在Xcode4使用开源的静态库_第7张图片
用户头搜索路径设置

用户头搜索路径设置定义所报进口例如“#进口MyLibraryClass.h”页眉搜索路径“设置括号内的进口(如可用”#import)与这些头文件定义我发现的Xcode引用形式自动完成所以我总是添加库用户头文件搜索路径,即使我的项目角度来看,他们可能系统级括号内的

当使用静态库,其中包括类别我们也将添加ObjC”标志其他链接程序标志构建设置这将强制链接器加载所有的Objective - C类和类别如果库包含类别all_loadforce_load,以及可能需要参见技术问答QA1490这些设置的更详细的解释

 
  配置 项目的 计划

Xcode中 在这一点上 已发现 我们的应用程序 项目 静态库 项目 之间 依赖 自动配置 我们 计划, 正确 不幸的是,我 没有 发现这是 在实践中 情况 相反 我们将不得不 修改 我们目前的 计划,并 添加 静态库 建设 目标 之前, 我们的应用程序 构建目标

在Xcode4使用开源的静态库_第8张图片
设置 该计划的 目标 构建顺序


固定 索引

在这一点上 我们应该可以 包括 依赖 静态库 使用 仍然 成功地构建 我们的应用程序 不幸 的Xcode 不显示 尽管 工作 的文件 指出 这些 链接 静态库 在代码完成 的任何类 索引 在整个 工作区 延长 内容感知 功能 代码完成和重构 范围
作为一种变通方法 我们可以 静态库 项目 拖动 我们的应用程序 项目 公共 ,增加 他们 作为参考 这些 头文件不需要 包括 我们的 建设 目标 ,只需 在我们的项目 的头 将允许 他们班 出现在 代码完成


创建一个静态库

如果我们计划发布一些我们自己的代码重用作为一个静态库,有几件事情我们应该做的,以确保上述过程是容易的,我们图书馆的用户尽可能简单。

命名空间的类适当
创建一个构建目标
公开的公​​共头
设置安装目录
设置的公共头路径
排除从VCS用户的特定文件

命名空间的类适当

使用类,协议,功能,和库中的常数,在图书馆的用户的项目名称,以防止碰撞的适当的前缀。

创建一个构建目标

在为我们的用户链接项目提供一个静态库的构建目标。 Xcode提供的模板创建静态库的项目,或加入静态库的建立对现有项目的目标。

公开的公​​共头

确定头文件库的用户应该是可见的。提供一个明确的命名组包含这些头文件,使我们的图书馆的用户可以轻松地找到他们作为“修复索引”上面所描述的解决方法的一部分。这也有助于我们澄清我们的图书馆提供的公共接口是什么,什么类的实施细则,有可能改变作为图书馆的发展。

对于每一个公共头文件,确保它设置为“公”,在“目标会员”督察窗格。只有公共头将要为我们的用户导入提供。

在Xcode4使用开源的静态库_第9张图片
制作一个头文件中的公共


设置安装目录

我们的静态库建设的目标将是一个用户的工作区的成员,该工作区的安装规则。因此,我们建立产品的静态库可安装在Xcode的喜好设置位置,路径中得出的数据,或通过我们的建设目标指定的路径。由于我们无法控制用户的设置,我们应该确保我们的图书馆是在所有情况下的表现。我设置的“安装目录”设置为“$(BUILT_PRODUCTS_DIR)”建立使静态库构建的产品,可以在发现一个已知的位置,并设置“跳过安装”建立设置为“Yes”,以避免意外安装的iOS库在“/ usr /本地/库”。

在Xcode4使用开源的静态库_第10张图片
设置安装目录


设置的公共头路径

我们需要指定一个位置复制静态库的公共头,使他们可以在我们的用户包括头搜索路径。设置“公共页眉文件夹路径”,“$(TARGET_NAME)”将创建一个文件夹后,我们的静态库命名为构建目标在共享工作区的建立目录和索引“用户头搜索路径”设置上面所述。

在Xcode4使用开源的静态库_第11张图片
设置为静态库的公共头文件路径


排除从VCS用户的特定文件

我们的工作区和项目,包括一些有关我们的用户帐户只包含数据的文件,窗口位置,打开的文件,等等。有没有必要检查到源代码控制这些,至少不会在我们的发行版分支,所以让我们使用GIT或任何VCS设置一些合理的忽略规则。 Github上提供了一个方便的设置。gitignore文件

未来的改进

希望的Xcode 4最终将不辜负它的文档的承诺,并一贯自动检测整个工作区的隐式依赖关系和索引文件正确。当然,似乎这种行为作斗争的其他开发人员的数量:[1],[2],[3] [4] [5] [6] [7] [8]。在此之前,索引的改善,我觉得这个过程至少在某种程度上是不是试图维持在Xcode 3模拟器和设备兼容的静态库构建简单和清洁。
我发现这种模式最好直接复制到我的项目的第三方类,因为它使我可以轻松地保持版本的历史,使我的工作区中的静态库项目的更新和避免太密切合作,以私人的结构和内容耦合我的项目静态库。
请让我知道如果你可以看到这种模式可以改善,或者如果你发现你自己的选择意味着共享代码的任何地区。
 

你可能感兴趣的:(XCode4)