iOS技术

不用但一定要懂 ---- iOS 之 Xcode 工程管理

2022-06-02  本文已影响0人  我来也super

Xcode Target

Xcode Project

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

一个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的构建目录覆盖。

上一篇下一篇

猜你喜欢

热点阅读