Xcode工作区与嵌套项目

Xcode工作区与嵌套项目,xcode,project,code-organization,Xcode,Project,Code Organization,我不理解如何使用Xcode工作区来组织相互依赖的项目。例如,我看到许多开发人员创建的工作区结构如下所示: Workspace |-- App |-- A Common Library |-- Another Common Library App |-- Libraries | |-- A Common Library | |-- Another Common Library 工作空间 |--应用程序 |--公共图书馆 |--另一个公共图书馆 这有什么好处?如果有人直接打开“应用程序”项目

我不理解如何使用Xcode工作区来组织相互依赖的项目。例如,我看到许多开发人员创建的工作区结构如下所示:

Workspace |-- App |-- A Common Library |-- Another Common Library App |-- Libraries | |-- A Common Library | |-- Another Common Library 工作空间 |--应用程序 |--公共图书馆 |--另一个公共图书馆 这有什么好处?如果有人直接打开“应用程序”项目,难道他们不能实际构建应用程序吗?他们必须认识到,工作空间的存在具有必要的依赖性

在我看来,更好的方法是使用如下嵌套项目:

Workspace |-- App |-- A Common Library |-- Another Common Library App |-- Libraries | |-- A Common Library | |-- Another Common Library 应用程序 |--图书馆 ||——公共图书馆 ||——另一个公共图书馆 那么就不存在无法构建的项目。它似乎也更符合Git的子模块思想


我所看到的工作区的唯一用途是对公共项目进行分组,彼此之间没有依赖关系。我想听听其他人对此的想法,因为我可能遗漏了一些东西。

当我想合并项目同时保持项目独立性时,我会使用工作区

我使用工作空间的一个例子是一系列教程项目,这些项目从非常简单发展到更复杂。每个项目都可以作为一个独立的项目,但将它们组合在一个工作区中有助于我组织整个项目

在另一个例子中,我为客户开发了一个应用程序。该应用程序在整个项目中既是一个独立的应用程序,也是一个模块。独立项目可以构建独立的应用程序。另一个应用程序使用包含两个项目的工作区。该应用程序的模块版本是根据一个特殊方案构建的,如果不使用工作区,该组合应用程序不会构建

上述两种情况的一个转折点是存储构建文件夹的位置。我必须更改Xcode首选项以将构建产品放入教程项目组的唯一文件夹中,在其他应用程序设置中为模块使用公共构建文件夹

在其他情况下,我有很多带有嵌入式项目的项目。在这些情况下,库项目是稳定的。我不会尝试进一步开发库项目,所以它们只是该项目的另一种资源。我发现在项目资源的文件系统组织在某种程度上反映了我的Xcode项目的组织的情况下工作更容易。因此,这些库项目被复制到主项目的文件层次结构中。如果我正在开发库并在多个项目中使用它们,那么使用工作区是有意义的。为了方便起见,我常常不费事

有时,我甚至将工作区与包含嵌入式项目的项目相结合


所以我的观点是,无论是组织工具,嵌入式项目还是工作空间,都有各自的优点和问题。我根据具体情况选择使用其中一种(或组合)

我们将嵌套项目添加到主项目的框架中,因此我们可以将它们“包括”到.framework产品中

Main
|-- Main
|-- MainTests
|-- Frameworks
|   |-- CommonLibrary.xcodeproj
|   |-- AnotherCommonLibrary.xcodeproj
|   |-- UIKit.framework
|   |-- Foundation.framework
|   |-- CoreFoundation.framework
|-- Products

有关向项目中添加通用框架的信息,请参见。一开始并不容易,但继续努力,你就会掌握窍门。

Woa!一个带有Xcode标记的问题,实际上是关于Xcode的!:)@阿尔莫:每隔几天就会发生一次。但是,它们通常有相反的问题:当[objc]不适用时,将其标记为:这里提到了使用工作区的一些原因:感谢您的见解。我同意你的大多数观点,但是,即使库在不断变化,我也看不到使用工作区的好处。如果您的库是在Git存储库中维护的,您应该能够将其作为子模块添加到项目中,然后根据需要更新子模块。是的,Git子模块是管理库开发的另一种方法(可能更好)。子模块是一种先进的git功能,许多iOS开发人员由于各种原因无法使用它,从缺乏知识到需要使用其他版本控制系统。在这种情况下,工作区可能是比嵌入式项目更好的选择。@Mr.Berna-很抱歉,在xcode中使用git是一件痛苦的事情。。。你无法控制你在每个项目中使用的版本/分支/分叉,除非你手动使用终端逐个目录并手动记录。是的,RuberDuck,将git与Xcode一起使用是一件痛苦的事情,但它比其他替代方案、集成度较低的版本控制系统或没有VCS的痛苦要小。Xcode的每一个版本都提高了集成度,苹果公司选择了git而不是任何其他VCS,所以我经常使用git,但主要是从命令行使用。然而,Git或Git不是这里的问题,它只是考虑在任何特定情况下使用工作区或嵌入式项目时要考虑的诸多因素之一。@伯纳-请帮助我解决我的需求,我的要求是:“我有两个项目叫做项目A和项目B。(项目B是工作区,因为我使用的是POD)。我想访问项目B,当我单击项目a上的某个特定按钮时,“像这样的情况,我应该怎么做。在每个.xcodeproj上都有CoCoapod,这样的结构可能吗?”?