Xcode:什么是简单的目标和计划?


Answers:


309

我也已经在Workspace和Project中添加了!

  • 工作区 -包含一个或多个项目。这些项目通常彼此相关
  • 项目 -包含代码和资源等。(您将习惯这些!)
  • 目标 -每个项目都有一个或多个目标。
    • 每个目标都定义该项目的构建设置列表
    • 每个目标还定义了在构建时要包括/使用的类,资源,自定义脚本等的列表。
    • 目标通常用于同一项目的不同发行版。
      • 例如,我的项目有两个目标,一个是“正常”版本,一个是“办公室”版本,它具有额外的测试功能,并且可能包含多个背景音乐轨道和一个用于更改轨道的按钮(当前如此)。
      • 添加类和资源时,您将习惯于将它们添加到默认目标中。
      • 您可以选择将哪些类/资源添加到哪个目标。
        • 在我的示例中,我有一个“ DebugHandler”类已添加到我的Office版本中
      • 如果添加测试,这还将添加一个新目标。
  • 方案 -方案定义当您按下“构建”,“测试”,“配置文件”等时发生的情况。
    • 通常,每个目标都有至少一个方案
    • 您可以转到“方案”>“管理方案”并按“立即自动创建方案”为目标自动创建方案。

如果我理解正确,请尝试...我正在编写一个应用程序并确定两个目标。我将上载到应用程序商店,而我已经在其中开发同一应用程序的下一版本。在方案中,例如,我在要运行的两个目标中都制定了一种方案,而在调试中又制定了一种方案?但是为什么我需要不同的方案呢?我不明白BJ荷马的优势。
MichiZH

FWIW,除非我添加我在答案中描述的额外调试功能,否则我不会使用不同的方案进行发布和调试。
James Webster

2
精湛的解释兄弟!!!
Sagar Kalathil '16

6
您的办公大楼底部有一个音乐按钮是什么意思。您的实际应用程序是否具有仅在Office内部版本中激活的额外代码,或者音乐是否在Mac上运行。抱歉,我很困惑
3366784 '18

这种定义定义了什么构成了每个概念,但没有定义每个项目的目的。对我来说,这就是OP所要求的。
O'Rooney

66

一个目标是在Xcode运行“构建”创造的最终产品。它可能是一个应用程序,一个框架,一个静态库或一个单元测试包。无论是什么,它通常对应于“已建产品”文件夹中的单个项目。

一个方案代表目标的集合,与你一起工作。当您在Xcode中选择各种操作(运行,测试,配置文件等)时,它定义了使用哪些目标。通常,您只有一个方案,该方案将主应用程序目标用于运行,存档和配置文件操作,以及测试操作的单元测试目标。如果要构建两个相关的应用程序,则可能有两个使用相同单元测试包但使用不同应用程序目标的方案。

方案(在Xcode 4中引入)的主要优点是,它们使您可以在运行应用程序和单元测试之间进行切换,而无需切换所选目标。


61

我是一个有远见的人,因此在解释这个概念时,我将使用图表。

当您有多个目标时,它们可以与Xcode的Run,Test,Profile操作一一对应,此概念定义了一个方案

在此处输入图片说明

一个目标是你的一个版本工程,即目标略有类和资源,在建的时间有差异。一个项目可以具有多个构建时间设置来满足不同的分发要求。


7
该图似乎是错误的。方案应与特定目标绑定,我看不到方案中可以有多个目标的位置。
Boon 2015年

6
@Boon不,粗心的选择是正确的。在方案编辑器中,单击左侧的“ build”项。在右侧区域中,单击“ +”,您可以向该方案添加更多目标。勾选所需的框。然后,这些目标的可执行文件可在可执行文件下拉菜单中的其他操作(运行,配置文件等)中使用。
occulus

很好,但是缺少方案的构建配置部分。我认为方案是操作(运行,测试,配置文件)如何与目标和构建配置(调试,发布,质量保证,产品等)组合匹配的集合。
史蒂夫·摩泽

3

Workspace.xcworkspace)-是多个的容器projects。它是[关于]的下一步创建的cross-project references

  • Workspace包含所有schemes包含的内容projects
  • Workspace处理所有implicit dependencies[关于]

观察结果:

  • 在同一内部处理不同项目是安全的,workspace不会被抓住Couldn't load Project.xcodeproj because it is already opened from another project or workspace
  • Cocoapods[关于]workspace哪里创建 Pods项目

Project.xcodeproj) -这是一种用于容器targetsscheme。它定义了代码文件,资源...

Target- PBXNativeTarget部分。定义一组特定的生成设置,这些生成将生成:

  • Application target
  • Library and framework targets
  • Test
  • Aggregate[关于]。例如,它用于创建Universal frameworkUmbrella framework

Scheme-一个Project's在Xcode的操作配置:运行测试配置文件分析存档Schema可以共享,以帮助您使用CI,Carthage...位于以下位置:

<project_path>/<project_name>.xcodeproj/xcshareddata/xcschemes

Dependency- Targets可以dependencies。依赖关系是源链接。这些依赖项可以静态或动态链接[关于]它们有两种类型:

  • Explicit Dependency[关于] -位于同一项目嵌套项目中的依赖项的源代码
  • Implicit Dependency[关于] -位于同一工作空间一部分的项目中的依赖项的源/关闭代码。

[词汇]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.