Xcode工作区与嵌套的项目

我不明白使用Xcode工作区来组织相互依赖的项目。 例如,我看到很多开发人员创build了如下所示的工作区结构:

工作区
 |  -  App
 |  - 一个共同的图书馆
 |  - 另一个共同的图书馆

这提供了什么好处? 如果有人直接打开“应用程序”项目不会无法真正build立应用程序? 他们必须认识到工作区存在必要的依赖关系。

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

应用
 |  - 图书馆
 |  |  - 一个共同的图书馆
 |  |  - 另一个共同的图书馆

那么不存在无法build立的项目。 它也似乎更符合Git的子模块的想法。

我看到的工作空间的唯一用途是将公共项目彼此没有依赖关系。 我想听听其他人的想法,因为我可能会错过一些东西。

我想在合并项目的同时保持项目独立性的同时使用工作区。

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

在另一个例子中,我有一个为客户开发的应用程序。 该应用程序既可以作为独立应用程序,也可以作为整个项目中的模块使用。 独立的项目可以构build独立的应用程序。 另一个应用程序使用包含两个项目的工作区。 该应用程序的模块版本是从一个特殊的scheme构build的,这个组合的应用程序不会不使用工作区。

上述两种情况的一种扭曲是构build文件夹的存储位置。 我必须更改Xcode首选项,将构build产品放到一组教程项目的唯一文件夹中,在另一个应用程序设置中为该模块使用公共构build文件夹。

在其他情况下,我有大量的embedded式项目项目。 在这些情况下,图书馆项目是稳定的。 我不想进一步发展图书馆项目,所以它们只是项目的另一个资源。 我觉得在我的文件系统项目资源组织方面工作起来更容易,这在某种程度上反映了我的Xcode项目的组织结构。 所以这些库项目被复制到主项目的文件层次结构中。 如果我正在开发库并在多个项目中使用它们,那么使用工作空间是有意义的。 为了方便,我经常不打扰。

有时我甚至将工作区与包含embedded式项目的项目结合在一起。

所以我认为,组织工具,embedded式项目和工作空间都有其优点和问题。 我根据具体情况select使用一种或另一种(或组合)。

我们将嵌套项目添加到主项目的框架中,所以我们可以将它们“包含”到框架产品中。

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

请参阅由Jeff Verkoeyen撰写的关于向项目添加通用框架的大型教程 。 起初,这并不容易,但是继续努力吧,你会得到它的窍门。