Xcode工程管理

Xcode的Target定义了要构建的产品,包含了构建说明和依赖关系。Project是文件、资源和构建信息的集合,可以有多个Target。构建设置影响产品的构建过程,可在项目或Target级别指定。Workspace用于组织多个项目和相关文件,共享构建目录,方便协作。Scheme定义了构建、测试和运行的配置。
摘要由CSDN通过智能技术生成

Xcode Target

  • Target 指定要构建的product,并包含从 product 或workspace中的一组文件构建product的说明。一个Target定义单个product;它将构建product所需的输入(源文件和处理这些源文件的说明)组织到构建系统中。project可以包含一个或多个Target,每个Target生成一个product

  • 构建product的说明采用了构建设置和构建阶段的形式,你可以在Xcode project编辑器中检查和编辑它们。Target继承project生成设置,但您可以通过在Target级别指定不同的设置来重写任何project设置。一次只能有一个执行Target;Xcode方案指定活动Target

  • Target及其创建的product可以与另一个Target相关。如果一个Target需要另一个Target的输出来进行构建,那么就说第一个Target依赖于第二个Target。如果两个Target在同一个workspaceXcode可以发现这个依赖关系,在这种情况下,它会按照需要的顺序构建product。这种关系称为隐式依赖关系。你也可以在你的构建设置中指定显式的Target依赖,你可以指定两个Xcode期望有隐式依赖的Target实际上是不依赖的。例如,您可以构建一个library和一个application,它们在同一个workspace链接到该libraryXcode可以发现这种关系,并自动首先构建library。但是,如果您实际上想要链接到library的版本,而不是workspace中构建的版本,那么您可以在构建设置中创建一个显式依赖项,它会覆盖这个隐式依赖项。

Xcode Project

Xcode项目是构建一个或多个软件产品所需的所有文件、资源和信息的仓库。project包含用于构建产品的所有元素,并维护这些元素之间的关系。它包含一个或多个Target,这些Target指定如何构建产品。project为项目中的所有Target定义默认settings(每个Target还可以指定自己的生成settings,这将覆盖项目生成settings)。

一个Xcode项目文件包含以下信息:

  • 引用源文件:

    • 源代码,包括头文件和实现文件
    • Libraries 和 frameworks, internal 和 external
    • Resource文件
    • Image文件
    • nib文件
  • 用于在结构导航器中组织源文件的组

  • Project级构建配置。可以为项目指定多个生成配置;例如,您可能有一个Project的调试和发布设置。

  • Target,其中每个Target指定:

    • Project构建的一个产品的引用
    • 对构建该产品所需的源文件的引用
    • 可用于构建该产品的构建配置,包括对其他Target和其他settings的依赖关系;当Target的生成配置不覆盖它们时,将使用项目级生成设置
  • 可用于调试或测试程序的可执行环境,可指定每个可执行环境:

    • 当你从Xcode运行或调试时要启动什么可执行文件
    • 传递给可执行文件的命令行参数(如果有的话)
    • 在程序运行时设置的环境变量(如果有)

Project可以独立存在,也可以包含在workspace中。

你可以使用Xcode方案来指定在给定的时间内哪个Target、构建配置和可执行配置是活动的。

Build Settings

构建Settings是一个变量,它包含关于产品构建过程的某个特定方面应该如何执行的信息。例如,构建Settings中的信息可以指定Xcode传递给编译器的选项。

可以在项目或Target级别指定生成Settings。每个项目级生成Settings都应用于项目中的所有Target,除非被特定Target的生成Settings显式覆盖。

每个Target组织构建一个产品所需的源文件。生成配置指定一组用于以特定方式生成Target产品的生成Settings。例如,对于产品的调试和发布版本,通常有单独的构建配置。

Xcode中的构建设Settings有两部分:Settings标题和定义。生成Settings标题标识生成Settings,可以在其他Settings中使用。构建Settings定义是一个常量或Xcode在构建时用来确定构建Settings值的公式。构建Settings也可以有一个显示名称,用于在Xcode用户界面中显示构建Settings

当你从项目模板创建新项目时,除了Xcode提供的默认构建Settings外,你还可以为你的项目或特定Target创建用户自定义的构建Settings。还可以指定条件生成Settings。条件生成Settings的值取决于是否满足一个或多个先决条件。例如,这种机制允许您指定用于基于Target体系结构构建产品的SDK。

Xcode Scheme

Xcode方案定义了一组要构建的Target,一组在构建时使用的配置,以及一组要执行的测试。

您可以有任意多个方案,但每次只能有一个是活动的。您可以指定方案是否应该存储在项目中(在这种情况下,它在包括该项目的每个工作空间中都可用),或者存储在工作空间中(在这种情况下,它仅在该工作空间中可用)。当您选择一个活动方案时,您也选择了一个运行Target(即,为其构建产品的硬件架构)。

Xcode Workspace

Workspace是一个Xcode文档,它把项目和其他文档分组,这样你就可以一起处理它们。 一个Workspace可以包含任意数量的Xcode项目,以及你想包含的任何其他文件。 除了组织每个Xcode项目中的所有文件,Workspace还提供了包含的项目和它们的目标之间隐式或显式的关系。

Workspace扩展您的工作流程的范围

项目文件包含指向项目中所有文件的指针,以及生成配置和其他项目信息。 在Xcode 3和更早的版本中,项目文件总是组和文件结构层次结构的根文件。 虽然一个项目可以包含对其他项目的引用,但在Xcode 3中处理相关的项目是复杂的; 大多数工作流程都局限于单个项目。 在Xcode 4及以后的版本中,你可以选择创建一个Workspace来保存一个或多个项目,以及其他你想要包含的文件。

除了提供对每个Xcode项目中所有文件的访问,Workspace还扩展了许多重要的Xcode工作流的范围。 例如,由于索引是在整个工作空间中完成的,所以代码完成、跳转到定义以及所有其他内容感知特性都可以无缝地通过工作空间中的所有项目工作。 因为重构操作跨工作空间的所有内容进行,所以您可以在一个框架项目和几个使用该框架的应用程序项目中在一个操作中重构API。 在构建时,一个项目可以使用Workspace中其他项目的产品。

Workspace文档包含指向所包含的项目和其他文件的指针,但不包含其他数据。 一个项目可以属于多个工作空间。 图中显示了一个包含两个Xcode项目(Sketch和TextEdit)和一个文档项目(Xcode4TransGuideDocPlan)的工作空间。

Workspace中的项目共享生成目录

默认情况下,Workspace中的所有Xcode项目都构建在同一个目录下,称为Workspace构建目录。每个Workspace都有自己的构建目录。因为Workspace中所有项目中的所有文件都在同一个构建目录中,所以所有这些文件对每个项目都是可见的。因此,如果两个或多个项目使用相同的库,则不需要将它们分别复制到每个项目文件夹中。

Xcode检查构建目录下的文件,以发现隐含的依赖关系。例如,如果一个包含在Workspace中的项目构建了一个库,而这个库又被同一个Workspace中的另一个项目链接起来,Xcode会在构建另一个项目之前自动构建这个库,即使构建配置没有明确说明这个依赖关系。如果需要,您可以使用显式的构建设置覆盖这些隐式依赖项。对于显式依赖项,必须创建项目引用。

工作空间中的每个项目都有自己独立的标识。要在不影响(或被影响)工作空间中的其他项目的情况下处理项目,您可以在不打开工作空间的情况下打开项目,或者可以将项目添加到另一个工作空间。因为一个项目可以属于多个工作空间,所以您可以在任意数量的组合中处理项目,而不必重新配置任何项目或工作空间。

您可以使用Workspace的默认构建目录,也可以指定一个。请注意,如果项目指定了构建目录,则该目录将被构建项目时项目所在的任何Workspace的构建目录覆盖。



作者:我来也super
链接:https://www.jianshu.com/p/f57b025d08ed
来源:简书
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值