在项目中嵌入项目?

时间:2013-03-16 19:06:12

标签: iphone ios ipad cocoa-touch cocoa

我有一个项目,它将在我的公司内部使用4个不同的应用程序。

主要项目核心是相同的。我首先考虑创建一个包含4个目标的大型应用程序,但我希望将引擎与目标分开,以便某些团队可以只使用引擎,而其他程序员可以使用每个目标。

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

有可能吗?

我该怎么做?有没有解释如何做的教程?

感谢

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

请注意,我故意忽略了您的应用项目的多个目标部分,因为您似乎已经认识到了这一点。我的回答集中在构建库的子项目的使用上。

  

有人告诉我,我可以在项目中嵌入一个项目   如果我可以嵌入所有人共有的引擎部件,那将非常有用   目标,在一个更大的项目中,我将有4个目标。

正确,子项目是Xcode的一个很好的功能。要完成这项工作,您可能需要首先创建一个使用静态库模板的项目。

enter image description here

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

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

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

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

现在将引擎库项目包(.xcodeproj)从您的finder直接拖到app-project中。

enter image description here

现在您只需要确保您的app-project链接到引擎库。要完成这项工作,您需要点击 Link Binary With Libraries 标签底部的小加号。

enter image description here

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

enter image description here

现在,通过将所有引擎库标题添加到 标题搜索路径 ,确保所有引擎库标题对应用项目可见。

enter image description here

如果你做的一切都正确,如果我没有省略重要的一步(对不起,如果我这样做),那么你的应用程序现在应该使用库子项目完美地构建。

完成所有这些步骤后,您可能还需要查看将引擎库分发给其他开发人员的选项。您可以在源项目中使用git-submodule,但您也可以仅在结果库上使用git-submodule。这样,没有其他开发人员能够摆弄你的引擎库,有时(通常来自我的经验)是一件好事。