2

我有一个项目将分叉 4 个不同的应用程序供我公司内部使用。

主要项目核心是一样的。我最初想创建一个包含 4 个目标的大型应用程序,但我希望将引擎与目标分开,这样一些团队可以只使用引擎,而其他程序员可以使用每个目标。

有人告诉我,我可以将一个项目嵌入到一个项目中,如果我可以将所有目标通用的引擎部分嵌入到一个更大的项目中,我将拥有 4 个目标,那将很有用。

是否可以?

我怎么做?是否有任何教程可以解释如何做到这一点?

谢谢

4

2 回答 2

1

是的,有可能 。我创建了一个包含 6 个不同目标的项目。好吧,在这里您可以将通用类添加到所有目标中,而执行与特定目标相关的不同或独特功能的类可以添加到相应的目标中。我不明白您说引擎应该通用的部分(只需在所有目标中添加公共类)。在 iOS 中,你的意思是引擎,我想是 AppDelegate 类。

您必须通过为预处理器标志和其他 C 标志的构建设置提供值来添加预处理器指令,以识别引擎(AppDelegate)的目标并相应地自定义功能。

但是,当大多数事情在每个目标之间是通用的并且需要对其他目标进行很少的定制时,实现这样的概念是明智的。

于 2013-03-16T19:37:59.587 回答
1

我认为现有的答案和评论将几个应该不同的东西混合在一起,因此我的答案......

请注意,我故意省略了您的应用程序项目的多个目标部分,因为您似乎已经想通了。我的回答集中在构建库的子项目的使用上。

有人告诉我,我可以将一个项目嵌入到一个项目中,如果我可以将所有目标通用的引擎部分嵌入到一个更大的项目中,我将拥有 4 个目标,那将很有用。

正确,子项目是 Xcode 的一个很好的特性。为此,您可能需要首先创建一个使用静态库模板的项目。

在此处输入图像描述

现在将创建核心引擎所需的所有文件添加到该新项目中。我将进一步将此称为您的引擎库项目。

完成后,创建一个新项目来创建您的应用程序 - 您当然也可以只使用现有项目,但请确保从该项目中删除所有引擎实现文件(以防止链接器错误)。

我现在假设您创建了两个项目,您的引擎库项目和您的应用程序项目。

现在是组合部分。首先,确保 engine-library-project 已关闭,并确保 app-project 在 Xcode 中打开。

现在将引擎库项目包 (.xcodeproj) 从您的 finder 直接拖到应用程序项目中。

在此处输入图像描述

现在您需要确保您的应用程序项目链接到引擎库。为此,您需要点击Link Binary With Libraries选项卡底部的小加号。

在此处输入图像描述

弹出的选择对话框应将您的库列为第一个选项。

在此处输入图像描述

现在,通过将所有引擎库标头添加到Header Search Paths来确保您的应用项目可以看到所有引擎库标头。

在此处输入图像描述

如果你做的一切都正确并且我没有遗漏一个重要的步骤(对不起,如果我遗漏了),那么你的应用程序现在应该使用库子项目构建得非常好。

正确完成所有这些步骤后,您可能还想研究将引擎库分发给其他开发人员的选项。您可以在源项目上使用 git-submodule,但您也可以仅在生成的库上使用 git-submodule。这样,没有其他开发人员能够摆弄您的引擎库,这有时(通常根据我的经验)是一件好事。

于 2013-03-16T20:44:16.387 回答