Xcode 简介

34 阅读2分钟

整体关系

  • Workspace:Xcode 提供的一个工作空间,其可以包含多个 project。通过组合 project,我们可以实现非常庞大、复杂的工程。

  • Project:一个 Xcode 工程的核心,project 维护并管理源代码、资源文件、框架和库等。此外,project 还提供了默认的 build configurations,用于指导构建 product。其中,每个 build configuration 包含一组 build setting

  • Target:其包含构建特定 product 所需的 build configuration、build rule、build phase,并指定对应的构建产物 product。

  • Product:基于 project 的源文件,根据 build phase、build rule 以及 project 和 target 的 build configuration 所构建的产物。

Build Phases

Xcode Build Phases 是一系列在构建一个 target 期间执行的任务,如下图所示。

image.png

Compile sources

  • 将可编译的源文件(如 Swift、Objective-C、Lex、Yacc)与当前 target 进行关联,并进行编译。如果有必要,为每个源文件指定编译选项。

  • Copy bundle resources

    • 将资源与当前 target 进行关联,在合适时进行处理,并将它们复制到 product 的 Resource 子文件夹中。
    • 此种类型的 build phase 可以为每个 target 使用一次,并且当且仅当 target 的 product 支持嵌入式资源时才能使用
  • Link binary with libraries

    • 将 Apple frameworks 等库与当前 target 进行关联。这些库可以是平台库、其他 target 生成的库、外部预构建的 XCFramework 和库。这些库可以被指定为必选的或可选的(弱链接——即库不存在,应用程序也可以加载)。
    • 此种类型的 build phase 可以为每个 target 使用一次,但是对于 Aggregate Target 和 External Build Tool Target,此种类型的 build phase 无法使用
  • Target dependencies

    • 显式指定在同一 project(非同一 workspace)或链接 project 中的其他 target,这些 target 必须在当前 target 自身构建之前进行构建。比如:依赖于 project 中另一个框架的 target 通常会配置有对该框架的 target 依赖项。Xcode 能够隐式地推断出一些依赖项,但是此 build phase 能够提供对依赖项及其构建顺序的更优的控制。