我想在我的游戏和我的游戏编辑器之间分享我的模型。游戏是在cocos2d框架中开发的,它包含C++和Objective-C代码。编辑器在Qt中完成(在Windows 7 atm上开发)。该模型是纯粹的C++(没有平台特定的东西)。应用程序之间的共享代码
我在工作中遇到类似问题,我通过将共享代码导出为项目并为其创建存储库来解决此问题。然后,我将它作为子项目添加并根据需要进行更新,但我不确定是否可以将子项目添加到Qt。它实际上就像一个静态库存储库,它是编辑器和游戏存储库的子库,但我不知道该怎么做。
我想在我的游戏和我的游戏编辑器之间分享我的模型。游戏是在cocos2d框架中开发的,它包含C++和Objective-C代码。编辑器在Qt中完成(在Windows 7 atm上开发)。该模型是纯粹的C++(没有平台特定的东西)。应用程序之间的共享代码
我在工作中遇到类似问题,我通过将共享代码导出为项目并为其创建存储库来解决此问题。然后,我将它作为子项目添加并根据需要进行更新,但我不确定是否可以将子项目添加到Qt。它实际上就像一个静态库存储库,它是编辑器和游戏存储库的子库,但我不知道该怎么做。
听起来像你要找的是什么Git submodules(重点煤矿):
经常发生在一个项目上工作时,你需要使用另外一个项目从内它。也许这是一个第三方开发的库,或者你正在单独开发并在多个父项目中使用。在这些情况下出现了一个常见问题:您希望能够将两个项目分开处理,但仍能够使用另一个项目中的项目...
Git使用子模块解决了此问题。 子模块允许您将Git存储库作为另一个Git存储库的子目录。这使您可以将另一个存储库克隆到您的项目中,并将您的提交分离为。
您还可以阅读关于submodules on the Git docs的更多信息。
Subtree merging是另一种选择。
有关git-subtree
脚本背后的血淋淋的详细信息,请参见this和this(按照增加核心的顺序)。
举后者手册:
有要包括从独立开发的项目在项目中的内容的情况。只要没有冲突的路径,您可以从其他项目中拉出。
有问题的情况是当存在冲突的文件时。潜在的候选人是Makefiles和其他标准文件名。你可以合并这些文件,但可能你不想。解决此问题的更好方法是将项目合并为自己的子目录。这不受递归合并策略的支持,所以只是拉动不起作用。
你想要的是子树合并策略,它可以帮助你在这种情况下。
git-subtree
脚本(Git在其相对较新版本的contrib
部分中提供)有助于子树合并。
它自己的回购单独的C++静态库就是答案。不应该有这样的复杂性(你甚至可以用Xcode编译它并将它安装到'/ usr/local'或其他东西中,并将它视为第三方库)。 – trojanfoe
@trojanfore - 只需将它作为子存储库添加到两个项目中? – Mercurial
不确定子回购(从未使用过)。我总是有单独的回购,我将其作为兄弟姐妹安排在文件系统中,并使用'../ otherproject/..'来引用它们。 – trojanfoe