带有插件、dll 和 3rd 方工具的大型 c++ 项目的结构

Posted

技术标签:

【中文标题】带有插件、dll 和 3rd 方工具的大型 c++ 项目的结构【英文标题】:Structure for large scale c++ projects with plugins, dlls and 3rd Party tools 【发布时间】:2012-01-18 12:57:47 【问题描述】:

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

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

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

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

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

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

提前致谢, 豪伊

【问题讨论】:

Qt 可能是灵感的来源。 我不希望对如此广泛的问题有一个好的答案。尝试拆分它,例如“跨平台构建”、“如何有效处理大项目内部不同的源码控制”、“大项目的目录结构”等。 【参考方案1】:

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

看起来像:

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

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

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

【讨论】:

我知道这是一个广泛的问题。但是拆分问题会导致针对特定任务的更多不同答案,其中一些不适合整个问题(这是我的观点)。 提及的项目现已失效。

以上是关于带有插件、dll 和 3rd 方工具的大型 c++ 项目的结构的主要内容,如果未能解决你的问题,请参考以下文章

MFC DLL的GUI工具?

在没有 3rd 方工具/项目的 MFC C++ 版本中查找内存泄漏

为啥 MonthCalendar 在 3rd 方应用程序中看起来不同?

使用 3rd 方 DLL 部署 WPF 应用程序

使用带有 Ionic 的 3rd 方 CSS

将 3rd-party C++ DLL 引用到 VS 2013 项目中