Структура для крупномасштабных проектов C ++ с плагинами, DLL и сторонними инструментами - PullRequest
1 голос
/ 18 января 2012

Я хочу реструктурировать крупномасштабный проект C ++, который состоит из нескольких частей.Я перечислю некоторые из этих частей и некоторые атрибуты, которые, мы надеемся, должны быть рассмотрены:

  • BaseClasses, это ограничено небольшой отдельной группой разработчиков.Это около 15 DLL
  • MainProject, это открытый исходный код для всех разработчиков, это около 10 DLL.
  • несколько Pluginprojects, которые открыты для каждой группы плагинов (каждый плагин является одним специальнымгруппа разработчиков), в настоящее время около 20 Plugin-DLL.
  • Сторонние материалы, такие как PDF Lib, Boost, (в будущем, возможно, также wxWidgets), некоторые геометрии и т. д. Большинство из них с исходным кодом, некоторые нет.

В настоящее время это разработано с VisualStudio для ОС Windows (только 32-битная версия) с небольшим количеством MFC и ATL.Версии с SVN и GIT (последний для некоторых сторонних библиотек).

Чтобы заглянуть дальше, мы хотим (возможно, имеем) создать мультиплатформенное приложение.В долгосрочной перспективе это должно работать на разных платформах и использовать кроссплатформенные инструменты и т. Д. Один прогон сборки для всех частей будет очень хорошим.Может быть, CMake может помочь здесь.

Я прочитал много вопросов в SO о структурах и т. Д., Но не могу найти правильные ответы.Также такие книги, как API Design или John Lakos "Large Scale ..", находятся на моей книжной полке.Я также изучил несколько проектов с открытым исходным кодом.

Существуют ли рекомендации / опыт / советы / книги о том, как создать структуру папок и проектов и зависимости для такого приложения?

Заранее спасибо, Хауи

1 Ответ

2 голосов
/ 18 января 2012

Ну, я рекомендую вам сделать разделение по программным модулям.Также создайте структуру каталогов на основе того же.

будет выглядеть примерно так:

  • / - Содержит CMakeLists (или ваш Makefile),ЛИЦЕНЗИЯ и многое другое ...
  • / deps - Все зависимости проекта (например, модули CMake, библиотеки Embbed)
  • / docs - Документация Doxygen
  • / include - Содержит заголовок "base.h", например
  • / include / ModuleNAME - Заголовки некоторого модуля
  • / source - Общие исходные файлы
  • / source / ModuleNAME - Специальный исходный файл модуля
  • / plugins - Плагины в DLL или что-то в этом роде

Ну, я думаю, что это хорошая структура.Я рекомендую вам просмотреть исходный код Qt, Boost, MongoDB и других крупных проектов.

Или вы можете посмотреть мой проект в GitHub: Sundry Framework

...