阅读 354

Xcode Concepts(Xcode 概念)

Xcode Concepts

Xcode Target

一个target特指用于构建一个product,在project或者workspace所包含的一组文件,一个target定义一个product。它组织构建系统的输入——源文件和处理这些源文件的指令——构建该product所需。Projects可以包含一个或多个arget,每个arget产生一种product。

product的构建说明(指南)来源于build settings和build phases,这些可以在Xcode project编辑器中进行修改和编辑。target的build settings继承自project的build settings,当然也可以在target级别去覆写project settings中特定选项,项目优先使用target构建选项,一次只能运行一个target,Xcode scheme可以配置要运行的target

target以及target构建的product可以关联另外一个target。如果一个target需要另外一个target的输出来构建,则说第一个target依赖第二个target。如果两个target在同一个workspace下,Xcode可以发现依赖关系,在这种情况下,它会按照所需的顺序构建products。如果有隐式依赖的关系,还可以在build settings中指定显式target依赖项,并且可以指定Xcode可能期望具有隐式依赖项的两个target实际上不依赖。例如,可以在同一workspace中同时构建一个库和一个链接到该库的应用程序。Xcode可以发现这种关系并首先自动构建库。但是,如果确实想要链接到workspace中构建的库版本以外的库版本,则可以在构建设置中创建显式依赖项,它会覆盖此隐式依赖项。

Xcode Project

Xcode project是构建一个或多个软件products所需的所有文件、资源和信息的仓库。project包含用于构建products的所有元素并维护这些元素之间的关系。它包含一个或多个targets,这些targets指定如何构建products。project为其中的所有target定义了一套默认的build settings(每一个target可以指定自己的build settings,通过设置覆盖project的build settings )

一个Xcode project包含如下信息:

  • 源文件的引用
    • 源码,包含头文件和实现文件
    • Libraries和frameworks,内部的和外部的
    • 资源文件
    • 图片文件
    • Interface Builder (nib) 文件
  • 用于在结构导航器中组织源文件的组(Groups)
  • 项目级的构建配置(Project-level build configurations),可以为一个项目指定多个构建配置,例如可以设置dubug和release的build settings
  • Targets,其中每个Target指定了:
    • project构建一个product的引用
    • 构建product所需引用的源文件
    • 构建product所使用的的构建配置,包括对其他target和settings的依赖,project-level的build settings(target不需要覆盖的部分)
  • 可用于调试或测试程序的可执行环境,执行环境指定了:
    • 从 Xcode 运行或调试时要启动的可执行文件
    • 要传递给可执行文件的命令行参数,如果有
    • 程序运行时要设置的环境变量,如果有

project可以是独立的,也可以包含在workspace中。

可以使用Xcode schemes来指定要运行target的构建配置和可执行配置。

Build Settings

build setting是一个变量,其中包含有关应如何执行product构建过程的特定方面的信息。例如,build setting中的信息可以指定Xcode传递给编译器的选项。

可以指定project级或者target级的build setting。project-level的build setting对所有的target生效,其中target没有单独配置build setting覆盖project。

一个target组织构建product所需的源文件。构建配置(build configuration)指定用于以特定方式构建 target' product的一组build settings。例如,对于product的debug和release构建,通常有单独的构建配置。

Xcode 中的build settings有两部分:setting titlethe definition。build setting title标识build settings可在其他settings中使用。build setting definition是一个常量或一个公式,Xcode用于在构建时确定构建设置的值。build setting也可能有一个显示名称,用于在Xcode用户界面中显示。

除了从project模板创建新project时,Xcode提供的默认build settings之外,还可以为project或特定target创建自定义的build settings。还可以指定条件build settings。条件build settings的值取决于是否满足一个或多个先决条件。例如,此机制允许开发者指定用于基于目标架构构建产品的SDK。

Xcode Workspace

workspace是一个Xcode文档,它对projects和其他文档进行组织,以便可以一起处理它们。一个workspace可以包含任意数量的Xcode projects,以及想要包含的任何其他文件。

Workspaces Extend the Scope of Your Workflow

Workspace扩展了工作流程的范围

project文件包含指向项目中所有文件的指针,以及构建配置(build configurations)和其他project信息。在Xcode 3及更早版本中,project文件始终是组(group)和文件结构层次结构(file structure hierarchy)的根。尽管一个project可以包含对其他project的引用,但在Xcode 3中处理相互关联的project很复杂,大多数工作流程仅限于单个项目。在Xcode 4 及更高版本中,可以选择创建一个Workspace来保存一个或多个project,以及开发者希望包含的任何其他文件。

除了提供对每个包含的Xcode project中所有文件的访问之外,Workspaces还扩展了许多重要的Xcode工作流程的范围。例如,因为索引(indexing)是在整个Workspaces中完成的,所以代码完成、跳转到定义和所有其他内容感知功能(content-aware features)可以在Workspaces中的所project目中无缝地工作。因为重构操作跨Workspaces的所有内容起作用,所以可以在一个framework project和多个使用该framework的应用程序项目中重构API,所有这些都在一个操作中完成。构建时,一个project可以使用Workspaces中其他projects的products。

Workspace文档包含指向包含的项目和其他文件的指针,但没有其他数据。一个project可以属于多个Workspace。该图显示了一个包含两个Xcode projects(Sketch 和 TextEdit)以及一个文档项目 (Xcode4TransGuideDocPlan) 的Workspace。

workspace_hierarchy.jpeg

Projects in a Workspace Share a Build Directory

Workspace中的Projects共享构建目录

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

Xcode检查构建目录中的文件以发现隐式依赖项。例如,如果workspace中包含的一个project构建了一个库,该库与同一workspace中的另一个project链接(引用),则Xcode会在构建另一个project之前自动构建库,即使构建配置(build configuration)没有明确此依赖项。如有必要,可以使用显式构建设置覆盖此类隐式依赖项。对于显式依赖项,必须创建project引用。

workspace中的每个project继续拥有自己独立的身份。要在不影响workspace中的其他project或不受其影响的情况下处理project,可以在不打开workspace的情况下打开项目,或者可以将项目添加到另一个workspace。由于一个项目可以属于多个workspace,因此可以以任意数量的组合处理的project,而无需重新配置任何project或workspace。

可以使用workspace的默认构建目录,也可以指定一个。请注意,如果project指定了构建目录,原来的构建目录会被覆盖。

You can use the workspace’s default build directory or you can specify one. Note that if a project specifies a build directory, that directory is overridden by the build directory of whatever workspace the project is in at the time you build the project.

Xcode Scheme

Xcode Scheme定义了要构建的targets集合、构建时要使用的配置以及要执行的测试集合。

可以拥有任意数量的schemes,但一次只能激活一个scheme。可以指定scheme是否应存储在project中——在这种情况下,它在包含该project的每个workspace中都可用,或者在workspace中——在这种情况下,它仅在该workspace中可用。当选择一个scheme时,还需要选择了一个运行目标(即为其构建products的硬件的体系结构)。

You can have as many schemes as you want, but only one can be active at a time. You can specify whether a scheme should be stored in a project—in which case it’s available in every workspace that includes that project, or in the workspace—in which case it’s available only in that workspace. When you select an active scheme, you also select a run destination (that is, the architecture of the hardware for which the products are built).

理解如有错误 望指正 转载请说明出处

文章分类
iOS
文章标签