c++ - 具有插件、dll 和第 3 方工具的大型 C++ 项目的结构

标签 c++ cross-platform cmake project structure

我想重组一个包含多个部分的大型 C++ 项目。我将列出其中的一些部分和一些希望应该考虑的属性:

  • BaseClasses,这仅限于一小群独立的开发人员。这是大约 15 个 DLL
  • MainProject,这是对所有开发人员开放的源代码,大约有 10 个 DLL。
  • 几个Pluginprojects,对每个plugin-membergroup开放(每个plugin都是一个特殊的开发者群体),目前大约有20个Plugin-DLLs。
  • 第 3 方的东西,例如 PDF Lib、Boost(将来可能还有 wxWidgets)、一些几何图形等等。大部分有源代码,有些没有。

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

进一步看,我们想要(也许已经)创建一个多平台应用程序。 从长远来看,这应该适用于不同的平台并使用跨平台工具等。 对所有部分进行一次构建运行会非常好。也许 CMake 可以提供帮助。

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

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

提前致谢, 豪伊

最佳答案

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

看起来像:

  • / - 包含 CMakeLists(或您的 Makefile)、许可证等...
  • /deps - 所有项目依赖项(如 CMake 模块、嵌入库)
  • /docs - Doxygen 文档
  • /include - 例如包含“base.h” header
  • /include/ModuleNAME - 一些模块的 header
  • /source - 通用源文件
  • /source/ModuleNAME - 特定模块源文件
  • /plugins - DLL 或其他东西中的插件

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

或者你可以在GitHub: Sundry Framework中查看我的项目

关于c++ - 具有插件、dll 和第 3 方工具的大型 C++ 项目的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8910457/

相关文章:

c++ - undefined reference - C++ 链接器错误

c++ - 我可以防止对象被 std::memcpy 复制吗?

c++ - 为什么这段代码不能用于删除链表中的节点?

c++ - 不能使用 Qt Xlsx

ruby - Ruby 对 GUI 开发有好处吗?

c++ - 如何在使用 CMake 构建时列出 .hpp 头文件

c++ - 来自另一个 IOS 应用程序的 IOS 应用程序命令

c# - 如何正确检测 Windows、Linux 和 Mac 操作系统

c++ - 将 CMake 与模板一起使用

c++ - CMake + qtcreator + MinGW + Debug模式 + Windows 7