如何组织使用公共文件的项目部分?

How to organize parts of a project that use common files?

我正在开发 C++ 项目。我的项目由两部分组成:后端和 GUI。它们都是用 C++ 编写的。现在我已经完成了第一部分的开发——后端。现在我想开始开发 GUI 部分,但我不知道如何组织 git 存储库和文件夹结构。现在我有一个只有后端项目的存储库。我应该为 GUI 创建另一个存储库吗?问题还在于后端和 GUI 项目将使用公共库和公共头文件。那么,如果创建一个新的存储库是个好主意,那么我该如何在项目之间共享公共文件呢?也许您知道一些开源项目也由多个部分组成并具有公共文件?我很高兴了解他们是如何解决这个问题的。希望得到您的帮助!

P.S:我使用 CMake 构建系统和 CLion IDE。后端和GUI由不同的编译器编译,但CMake不支持在一个项目中使用不同的编译器。所以,无论如何我必须分开CMake项目。

对于公共库或任何“通用”代码,我通常会做的是将它们放入它们自己的存储库中。然后,您可以将共享库作为 Git 个子模块拉入您的其他项目(后端和 GUI)。

子模块的一大优势是,父项目(GUI 或后端)中的 link 跟踪对父项目所做的任何提交中使用的特定修订,因此永远不会混淆哪个版本在父项目的任何特定版本中使用了公共库。

可以在此处找到有关子模块的更多详细信息: https://git-scm.com/book/en/v2/Git-Tools-Submodules