RealtimeMeshComponent icon indicating copy to clipboard operation
RealtimeMeshComponent copied to clipboard

Unable to compile the plugin with UE 5.4.0.2. Fedora Linux 40

Open HoneyHazard opened this issue 1 year ago • 2 comments

UE Engine v 5.4.0.2 Fedora Linux 40

Tried both the marketplace version and v5.2.0 release on Github

Am I missing some prerequisite?

------ Building 3 action(s) started ------
[1/3] Compile Module.RealtimeMeshEditor.cpp
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:63:2: error: use of undeclared identifier 'FEditorDelegates'
        FEditorDelegates::OnMapOpened.AddLambda([this](const FString&, bool)
        ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:67:2: error: use of undeclared identifier 'FEditorDelegates'
        FEditorDelegates::OnMapLoad.AddLambda([this](const FString&, FCanLoadMap&)
        ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:67:63: error: unknown type name 'FCanLoadMap'
        FEditorDelegates::OnMapLoad.AddLambda([this](const FString&, FCanLoadMap&)
                                                                     ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:77:6: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
        if (GEditor && LumenUseCheckHandle.IsValid())
            ^~~~~~~
            GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:80:7: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
                if (GEditor->IsTimerManagerValid())
                    ^~~~~~~
                    GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:80:16: error: member reference type 'bool' is not a pointer
                if (GEditor->IsTimerManagerValid())
                    ~~~~~~~  ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:82:4: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
                        GEditor->GetTimerManager().Get().ClearTimer(LumenUseCheckHandle);
                        ^~~~~~~
                        GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:82:13: error: member reference type 'bool' is not a pointer
                        GEditor->GetTimerManager().Get().ClearTimer(LumenUseCheckHandle);
                        ~~~~~~~  ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:199:7: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
                if (GEditor && !LumenUseCheckHandle.IsValid())
                    ^~~~~~~
                    GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:202:8: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
                        if (GEditor->IsTimerManagerValid())
                            ^~~~~~~
                            GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:202:17: error: member reference type 'bool' is not a pointer
                        if (GEditor->IsTimerManagerValid())
                            ~~~~~~~  ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:204:5: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
                                GEditor->GetTimerManager().Get().SetTimer(LumenUseCheckHandle,
                                ^~~~~~~
                                GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:204:14: error: member reference type 'bool' is not a pointer
                                GEditor->GetTimerManager().Get().SetTimer(LumenUseCheckHandle,
                                ~~~~~~~  ^
13 errors generated.

HoneyHazard avatar Aug 09 '24 01:08 HoneyHazard

Okay, I see now there was a commit f4f3c8d63f0042f6eba4e63ed93674de0e521748, which says it "added missing include" of Editor.h. But, unfortunately, it seems to have done the opposite, and has, in fact, removed the crucial include line, and has thus broken the compilation in master. And, I believe, the 5.2.0 tag and the marketplace version are also failing because of missing #include "Editor.h". I hope you fix this soon and more folks can enjoy your wonderful plugin fresh out of the box :)

HoneyHazard avatar Aug 10 '24 05:08 HoneyHazard

I'm building from master (in the pro repo) in Windows and it builds/runs fine in dev and shipping. Kind of implies there is a bug in UnrealBuiltTool or Epics header guards somewhere. I can confirm that adding #include "Editor.h" in to Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp doesn't break the windows build. Guess it's just one of those things.

Why not make a PR with the include back in?

executionunit avatar Aug 10 '24 09:08 executionunit