模块:如何包含公共文件夹中的命名模块?

问题描述 投票:0回答:1

我在 UE5 游戏中创建了一个名为 MinimapSystem 的模块,其结构如下(位于我游戏的 Source 文件夹中):

MinimapSystem
    ├───MinimapSystem.Build.cs
    ├───Private
    │   └───MinimapSubsystem.cpp
    └───Public
        └───MinimapSubsystem.h

这是我的 MinimapSystem.Build.cs 文件的内容:

using UnrealBuildTool;


public class MinimapSystem : ModuleRules
{
    public MinimapSystem(ReadOnlyTargetRules Target) : base(Target)
    {
        PublicDependencyModuleNames.AddRange(new string[]
        {
            "Core",
            "CoreUObject",
            "Engine",
            "UMG"
        });
    }
}

这模仿了我在 UE5 核心模块结构中看到的内容,当我包含其中一个模块时,我不需要指定路径的

Public/
部分,即

#include "GeometryCollection/GeometryCollectionActor.h"

因此,在我的游戏中,我用我的模块尝试同样的事情:

#include "MinimapSystem/MinimapSubsystem.h"

但是当我尝试编译时,这会引发致命错误:

致命错误C1083:无法打开包含文件:'MinimapSystem/MinimapSubsystem.h':没有这样的文件或目录

编译游戏的唯一方法是指定

Public/
文件夹,如下所示:

#include "MinimapSystem/Public/MinimapSubsystem.h"

我已将模块添加到 MyGame.Build.cs,如下所示:

        PublicDependencyModuleNames.AddRange(new string[]
        {
            "Core",
            "MinimapSystem",
        });

如何通过 Public 文件夹中的名称包含我的模块?

c++ unreal-engine4 unreal-engine5 unreal
1个回答
1
投票

解决方案是像这样构建模块:

MinimapSystem
    ├───MinimapSystem.Build.cs
    ├───Private
    │   └───MinimapSubsystem
    │       └───MinimapSubsystem.cpp
    └───Public
        └───MinimapSubsystem
            └───MinimapSubsystem.h

这模拟了 GeometryCollection 模块的实际结构。现在,我可以包含我的模块,例如:

#include "MinimapSystem/MinimapSubsystem.h"
© www.soinside.com 2019 - 2024. All rights reserved.