Projects Vs XCode工作区中代码库的目标

时间:2013-10-01 10:21:11

标签: ios xcode organization codebase

关于TargetsProjects概念的XCode文档很有帮助,但我仍然不确定在我的情况下使用的最佳做法。

我在一个SVN存储库中有一个现有的代码库(用于Windows和iOS),它刚刚从一个测试应用程序重构为一个中央库和一个应用程序。这个想法是随着时间的推移,更多的应用程序将使用这个中央库。

XCode项目将一组源文件映射到一个或多个目标,因此我可以为整个代码库创建一个项目,为库创建一个目标,为每个应用程序创建一个目标。但是每个应用程序显然都有自己的代码,因此将所有源代码以这种方式放入单个项目似乎有点笨拙。

或者,我可以拥有一个包含多个项目的工作区,每个项目都有一个目标。这更像是我为Windows构建设置的东西,其中Visual Studio解决方案对应于Xcode工作区,VC ++项目将整齐地映射XCode项目的组织方式。

但在这种情况下是否有“正常”/预期的做法,我应该尝试遵循一些非官方标准,以便其他开发人员不要混淆?

3 个答案:

答案 0 :(得分:4)

现在的目标用于在项目中构建依赖项和单独的构建。你会发现它主要用于单元测试。有时,您可能会为不同的处理器或操作系统提供不同的二进制文件,但这在当今的应用商店世界中很少见。

通常,每个可执行文件都有一个项目。这使得它可以独立工作并单独编译而不会相互干扰。

您可以在项目中包含项目,这样您就可以独立处理它们并为它们设置依赖项。您可以设置项目来构建子项目,并将其可执行文件存放在项目链接的位置。

我会说你的情况,制作一个包含可执行文件和测试目标的库项目。然后将该项目包含在其他项目中,您可以链接到或将文件移动到其他项目的位置。 Here's the gist of how to do it.

我知道您没有提及它们,但基本上添加了工作区以允许您在一个窗口中打开多个项目。您可以使用所有测试应用程序和参考代码,而无需在后台进行编译。我发现它非常方便。

答案 1 :(得分:1)

关键区别在于每个目标只在一个项目中,但一个项目可以是许多工作区的一部分。这使您可以拥有项目Lib,AppA和AppB,然后是WorkspaceA = [AppA,Lib]和WorkspaceB = [AppB,Lib],这样开发AppA的开发人员就不必加载与AppB相关的东西。作为一般建议,为您可能想要独立共享的事物创建项目是个好主意。

答案 2 :(得分:0)

当我在一个或多个项目(Xcode或其他IDE)之间共享代码时,我通常会将共享部分编译成二进制文件,然后将其链接到特定于代码的项目。

在你的设置中,类似于Xcode项目只是为了从共享C ++文件编译dylib,然后是一个与这个dylib链接的主要Xcode项目。