Как организовать проект на С++

Я хотел бы знать, что такое лучшие рекомендации С++, когда дело доходит до организации моего проекта. Я прочитал, что я должен поместить все исходные файлы (.cpp) в папку src, а файлы заголовков (.h) должны быть помещены в папку include. Так оно и должно быть, или я должен помещать файлы заголовков в папку исходных файлов?

Это структура дерева папок

- Project
|
+--- src (.cpp)
|
+--- include (.h) ????
|
+--- test (cpp unit test)
|
+--- doc (docs)

Ответ 1

файлы заголовков (.h) должны быть помещены в папку include.

Не все из них. Только в общественном достоянии. Если a class или функция специфична для модуля, она должна быть внутри этого модуля. Папка include должна содержать заголовки, которые могут быть включены любым другим модулем.

Вы также, вероятно, захотите добавить:

  • bin - для хранения ваших библиотек
  • lib - тот же
  • exe - генерировать исполняемые файлы здесь (необязательно, также может быть в bin)
  • etc - файлы конфигурации

Ответ 2

Это вопрос предпочтения, но организация базы кода помогает в ремонтопригодности, а также для легкого понимания кода. Как можно больше нужно иметь модульный подход. Ваша организация кода выглядит почти правильно, в идеале я бы:

- Project
|
+--- src (.cpp)
|
+--- include (.h) ????
|
+--- test (cpp unit test)
|
+--- doc (docs)
|
+--- bin (generated binaries)
|
+--- lib (external dependencies)