C ++ нужно включать заголовки на много каталогов вверх

У меня есть следующая структура папок в 2D-игре в стиле Terraria / Minecraft:

src/
- Backend/
- - Vector.hpp
- World/
- - Elements/
- - - Mobs/
- - - - BaseMob.cpp

Как вы могли догадаться, в каждом каталоге есть еще много исходных файлов. внутри BaseMob.cpp Мне нужен доступ src/Backend/Vector.hpp, Есть ли более чистый способ написать #include "../../../Backend/Vector.hpp" (То есть. #include "/Backend/Vector.hpp") или лучший способ организовать файлы в моей исходной папке?

Вот еще немного информации о фактическом содержании в исходных папках (большинство .cpp файлы исключены):

Backend/ # Anything specific to a particular platform
- Vector.hpp
- Graphics.hpp
World/ # Anything about the whole game's world
- Elements/
- - Mobs/
- - - BaseMob.hpp # Polymorphic base class
- - - MobHandler.hpp # Manages all mobs in world
- - - PlayerMob.hpp
- - - WaterMob.hpp
- - Block.hpp # Defines all possible blocks
- - Inventory.hpp
- - Furnace.hpp
- World.hpp
- WorldRenderer.hpp # Makes calls to Backend/graphics.hpp
main.cpp

0

Решение

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

Чистым способом является добавление необходимых папок (той, в которой хранятся нужные вам заголовочные файлы) к вашему «пути включения», используемому компилятором, чтобы он мог их найти.

Тогда вместо #include "World/Elements/Mobs/BaseMob.hpp", вы добавляете World/Elements/Mobs включить пути, а затем просто сделать #include "BaseMob.hpp"

Если вы используете другой компилятор / IDE, он должен предоставить возможность сделать это.

4

Другие решения

Я рекомендую воздерживаться от размещения путей в операторах #include. Если файл перемещается, вам придется изменить все источники.

IMO, лучший способ — сообщить компилятору, где искать включаемые файлы. Типичная опция компилятора командной строки — «-I» (заглавная буква i). В IDE может быть настройка, в которой вы можете перечислить все пути для поиска.

Сообщая компилятору, где искать, вы включаете файлы в любое место и можете перемещаться, и вам не нужно менять исходный код.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector