5

关于目标项目概念的 XCode 文档很有帮助,但我仍然不确定在我的情况下使用的最佳实践。

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

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

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

但是在这种情况下是否有“正常”/预期的方式来做事,我应该尝试遵循一些非官方标准,以免其他开发人员感到困惑?

4

3 回答 3

4

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

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

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

对于您的情况,我会说,制作一个具有可执行和测试目标的库项目。然后将该项目包含在其他项目中,您可以链接到或将文件移动到其他项目的位置。这是如何做到这一点的要点。

我知道您没有提及它们,但基本上添加了工作区以允许您在单个窗口中打开多个项目。您也可以使用所有测试应用程序和参考代码,而无需在后台编译它们。我觉得超级好用。

于 2013-10-11T03:13:47.477 回答
1

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

于 2013-10-10T14:01:37.300 回答
0

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

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

于 2013-10-10T13:53:07.737 回答