具有插件,dll和第三方工具的大型c ++项目的结构

时间:2012-01-18 12:57:48

标签: c++ cross-platform cmake project structure

我想重组一个包含几个部分的大型c ++项目。我将列出一些这些部分和一些有希望考虑的属性:

  • BaseClasses,这仅限于一小组独立的开发人员。这是大约15个DLL
  • MainProject,这是所有开发人员的开源,这是大约10个DLL。
  • 几个Pluginprojects,每个插件成员组都开放(每个插件是一个特殊的开发人员组),目前大约有20个插件DLL。
  • 第三方的东西,比如PDF Lib,Boost,(以后也许还有wxWidgets),一些几何东西等等。大多数有源,有些没有。

目前,这是在Windows操作系统上使用VisualStudio开发的(现在只有32位),只有很少的MFC和ATL。使用SVN和GIT进行版本控制(最后用于某些第三方库)。

为了更进一步,我们希望(可能有)创建一个多平台应用程序。 从长远来看,这应该适用于不同的平台并使用跨平台工具等。 所有部件的单次构建运行都非常好。也许CMake可以在这里提供帮助。

我已经阅读了很多关于结构等的问题,但却找不到合适的答案。 API Design或John Lakos“Large Scale ..”等书籍也出现在我的书架上。我还研究了几个开源项目。

是否有关于如何为此类应用程序制作文件夹和项目结构及依赖项的建议/经验/提示/书籍?

提前致谢, 豪伊

1 个答案:

答案 0 :(得分:2)

好吧,我建议您通过软件模块进行分离。还要基于相同的目录创建目录结构。

看起来像:

  • / - 包含CMakeLists(或您的Makefile),LICENSE等......
  • / deps - 所有项目依赖项(如CMake Modules,Embbed Librarys)
  • / docs - Doxygen文档
  • / include - 包含“base.h”标题,例如
  • / include / ModuleNAME - 某些模块的标题
  • / source - 常规源文件
  • / source / ModuleNAME - 特定模块源文件
  • / plugins - DLL中的插件或其他内容

嗯,我认为这是一个很好的结构。我建议您查看Qt,Boost,MongoDB和其他大型项目的源代码。

或者您可以在GitHub: Sundry Framework

中查看我的项目