C++ 组合两个C++;项目

C++ 组合两个C++;项目,c++,open-source,C++,Open Source,我正在编写NoSQL数据库 所有内容都在“平面”目录中,包含Makefile、*.h和*.cc文件 我使用了很多C++模板,所以我在一些头文件中有很多代码。 为了简单起见,我将项目分为两部分 数据存储部分: 和网络部分: 我有几个通用文件,它们目前在每个目录中 现在我需要将它们合并到一个项目中 由于C++模板,大部分代码都是很相通的,但是如果我把所有的东西放在单个平面目录中,就不会那么好看了。 有什么建议我可以使用什么目录结构,或者我可以如何合并项目 如果有什么不清楚的地方,请评论,这样我可

我正在编写NoSQL数据库

所有内容都在“平面”目录中,包含
Makefile
*.h
*.cc
文件

我使用了很多C++模板,所以我在一些头文件中有很多代码。 为了简单起见,我将项目分为两部分

数据存储部分:

和网络部分:

我有几个通用文件,它们目前在每个目录中

现在我需要将它们合并到一个项目中

由于C++模板,大部分代码都是很相通的,但是如果我把所有的东西放在单个平面目录中,就不会那么好看了。 有什么建议我可以使用什么目录结构,或者我可以如何合并项目


如果有什么不清楚的地方,请评论,这样我可以改进问题。

我的规则如下:

  • 当A使用B和B使用A时,将A和B放在同一目录中
  • 创建目录D1、D2、D3等的层次结构
  • 如果Dy中的B在Dx中使用A,那么x
  • 永远不要有两个同名的文件,即使是在分开的目录中
这样做的主要原因是能够为每个目录编译一个中间静态库,而不会出现链接问题

我的一个大型应用程序中的目录示例:

  • BuildInfo:从构建中获取信息的一些工具(libs和编译器版本、构建宏等)
  • 异常:我可以在应用程序中使用的所有异常
  • 工具:一般的C++工具,如矩阵、IO工具(日志、线程管理器、Python接口、…)
  • MyAppCommon:我的应用程序的通用类
  • 算法:我的应用程序的算法
  • Main:创建最终可执行文件的不同Main,libs,Python接口

A使用B中的模板类别,B不使用A。D1、D2、D3……的用途是什么……如果您认为A和B生活在同一个世界,请将它们保存在同一个目录中。如果不是,B可以在D1中,A可以在D2中。我用一个例子编辑了答案。问题是什么?如何构建软件项目?有点宽泛和主观,不是吗?