我在 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") 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
最佳答案
您可以考虑重新组织您的包含文件夹。这是一个可能的解决方案,但可能还不够:当您开始使用第 3 方库时,您将无法做到这一点……因此您需要一种更好的方法来解决这个问题。
干净的方法是将所需的文件夹(存储所需头文件的文件夹)添加到编译器使用的“包含路径”,以便它可以找到它们。
然后,您将 World/Elements/Mobs
添加到包含路径,而不是 #include "World/Elements/Mobs/BaseMob.hpp"
,然后简单地执行#include "BaseMob.hpp"
- 例如,如果您使用 gcc:How to add a default include path for gcc in linux?
- 对于 Visual Studio:How do include paths work in Visual Studio? ...
如果您使用不同的编译器/IDE,它必须提供一个选项来执行此操作。
关于C++ 需要在许多目录中包含头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37734256/