Настройка папки по умолчанию для большого проекта - PullRequest
0 голосов
/ 15 июня 2019

Поскольку я пытаюсь изучить C ++, я начал с более крупного проекта, в котором я пытаюсь использовать классы, чтобы избежать беспорядочного файла main.cpp.Это означает, что я создаю больше файлов .cpp, которые я поместил в ту же папку, что и файл main.cpp.Это привело к грязному каталогу, поэтому я попытался управлять своими файлами, добавив папки по двум ссылкам:

Мои вопросы следующие:

  • Существует ли стандарт для создания проектов C ++, который используется на рабочем местеили каждый проект создается субъективно?
  • Если стандарта не существует, следует ли избегать каких-либо плохих практик при создании структуры папок?
  • Можно ли создать структуру папок, в которую я помещаю всезаголовочные файлы (.h)
    в одном каталоге и все исходные файлы (.cpp) в другом каталоге, такие как C:\headers\header.h и C:\source\main.cpp, чтобы включить в мой каталог #define HEADER "/path to header", а затем каким-то образом #include HEADER "aheader.h", что будет означатьчто мне не нужно каждый раз при включении заголовка записывать путь к каталогу заголовка и вместо этого писать HEADER перед включением?

Пример:

Вместо:

#include "c:\headers\header.h"
#include "c:\headers\anotherheader.h"

Использование:

#define HEADER "c:\headers\"
#include HEADER "header.h"
#include HEADER "anotherheader.h"

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

Моя текущая структура:

Current structure

1 Ответ

1 голос
/ 15 июня 2019

Существует ли стандарт для создания проектов C ++, который используется на рабочем месте, или каждый проект создается субъективно?

Нет, вы можете найти разные структуры в разных проектах.

Если стандарта не существует, есть ли какие-либо плохие практики, которых следует избегать при создании структуры папок?

Вам следует:

  • Поставитьскомпилированные файлы в другой папке (может быть, в bin).
  • Организуйте свой проект в разных логических модулях, размещенных в разных папках.
  • Используйте корневую папку для файлов без кода (makefile, gitignore и т. д.)...).
  • Используйте только строчные имена, чтобы избежать глупых ошибок.

Не следует:

  • Использовать абсолютные пути.

Могу ли я создать структуру папок, в которой все файлы заголовков (.h) помещаются в один каталог, а все исходные файлы (.cpp) - в другой каталог, например C: \ headers \ header.hи C: \ source \ main.cpp в моем включениииспользуйте #define HEADER "/ path to header" и затем каким-то образом #include HEADER "aheader.h", что будет означать, что мне не нужно каждый раз, когда включается заголовок, записывать путь к каталогу заголовков и вместо этого писать HEADER перед включением?

Нет, это действительно плохо.

Мне не нравится использовать разные папки для файлов с исходным кодом / заголовками, но если вы хотите.Вы можете обойти, используя include-пути (флаг -l).

Поэтому вы должны использовать:

#include <header.h>
#include <anotherheader.h>

Это работает, потому что вы включаете папку во время компиляции:

g++ -l "../headers" enemy.cpp

Любая разумная IDE сделает это за вас.Или вы можете сделать это в вашем make-файле, в зависимости от того, что вам подходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...