我在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 :(得分:4)
您可以考虑重新组织包含文件夹。这是一种可能的解决方案,但可能还不够:当您开始使用第三方库时,您将无法做到这一点......所以您需要一种更好的方法来解决这个问题。
干净的方法是将所需的文件夹(存储所需的文件夹的文件夹)添加到编译器使用的“包含路径”中,以便它可以找到它们。
然后,代替#include "World/Elements/Mobs/BaseMob.hpp"
,您将World/Elements/Mobs
添加到包含路径,然后只需#include "BaseMob.hpp"
如果您使用其他编译器/ IDE,则必须提供一个选项来执行此操作。
答案 1 :(得分:0)
我建议不要在#include语句中放置路径。如果文件移动,您将不得不更改所有源。
IMO,更好的方法是告诉编译器在哪里查找包含文件。常见的命令行编译器选项是“-I”(大写字母i)。在IDE中,可能存在一个设置,您可以在其中列出要搜索的所有路径。
通过告诉编译器在哪里搜索,您可以在任何地方包含文件,并且可以移动,而不必更改源代码。