2013-07-09 57 views
0

我想在我的游戏和我的游戏编辑器之间分享我的模型。游戏是在cocos2d框架中开发的,它包含C++和Objective-C代码。编辑器在Qt中完成(在Windows 7 atm上开发)。该模型是纯粹的C++(没有平台特定的东西)。应用程序之间的共享代码

我在工作中遇到类似问题,我通过将共享代码导出为项目并为其创建存储库来解决此问题。然后,我将它作为子项目添加并根据需要进行更新,但我不确定是否可以将子项目添加到Qt。它实际上就像一个静态库存储库,它是编辑器和游戏存储库的子库,但我不知道该怎么做。

+1

它自己的回购单独的C++静态库就是答案。不应该有这样的复杂性(你甚至可以用Xcode编译它并将它安装到'/ usr/local'或其他东西中,并将它视为第三方库)。 – trojanfoe

+0

@trojanfore - 只需将它作为子存储库添加到两个项目中? – Mercurial

+0

不确定子回购(从未使用过)。我总是有单独的回购,我将其作为兄弟姐妹安排在文件系统中,并使用'../ otherproject/..'来引用它们。 – trojanfoe

回答

2

听起来像你要找的是什么Git submodules(重点煤矿):

经常发生在一个项目上工作时,你需要使用另外一个项目从内它。也许这是一个第三方开发的库,或者你正在单独开发并在多个父项目中使用。在这些情况下出现了一个常见问题:您希望能够将两个项目分开处理,但仍能够使用另一个项目中的项目...

Git使用子模块解决了此问题。 子模块允许您将Git存储库作为另一个Git存储库的子目录。这使您可以将另一个存储库克隆到您的项目中,并将您的提交分离为

您还可以阅读关于submodules on the Git docs的更多信息。

+0

这个,但在我看来子模块工作流程很糟糕,如果子模块需要经常更改/更新。 – mnagel

+0

它对我来说很好。谢谢。 – Mercurial

1

Subtree merging是另一种选择。

有关git-subtree脚本背后的血淋淋的详细信息,请参见thisthis(按照增加核心的顺序)。

举后者手册:

有要包括从独立开发的项目在项目中的内容的情况。只要没有冲突的路径,您可以从其他项目中拉出。

有问题的情况是当存在冲突的文件时。潜在的候选人是Makefiles和其他标准文件名。你可以合并这些文件,但可能你不想。解决此问题的更好方法是将项目合并为自己的子目录。这不受递归合并策略的支持,所以只是拉动不起作用。

你想要的是子树合并策略,它可以帮助你在这种情况下。

git-subtree脚本(Git在其相对较新版本的contrib部分中提供)有助于子树合并。

相关问题