Sub-Includes


#1

I wanted to see if there was a recommendation on how to handle missing sub-includes. In the past I’ve been modifying the engine source but I see now that there is the AdditionalIncludes parameter in the :sk: ini file.

For instance my project complains about ProgressBar.h missing the definition of its base class UWidget. I attempted adding the line to my project’s SkookumScript.ini:

+AdditionalIncludes=Widget.h

The issue remains the same however. I tried giving more precise path info Components/Widget.h but no luck. Is there a right way of doing this? I don’t understand why the engine includes don’t include their own subclass, it really feels like a bug to me or that I’m missing some grand base-level include.


#2

Yeah the really annoying issue is that a huge number of UE4 include files do not properly include all their dependencies. We spent days and days on making the SkookumScriptGenerator produce the include files in the most magical order possible so that dependencies would happen be declared before they are used. E.g. whenever dependencies are reflected via the UPROPERTY etc. macros, we build a dependency tree and use that to determine the order of includes, but not all C++ types are reflected. So some issues remain like you encountered.

What you did should work. Have you Cleaned UnrealHeaderTool after you made the change to SkookumScript.ini?

Also note that a lot of the modules have a main include file that carpet includes everything, e.g. UMG.h (potentially increasing build time of course). So if you got any UMG issues you can just fix them all by specifying +AdditionalIncludes=UMG.h.


#3

Btw I also just created a new detailed guide on skookifying your C++ project that hopefully clarifies things some more!


#4

Thanks for the clarification. I’m going to try submitting a pull request for the few UMG headers that are causing me grief. This really feels like an upstream engine problem that’s being band-aided. Even if the PR is denied it would be nice to hear the reasoning behind this architecture.


#5

I submitted this pull request. If you have any further details to add feel free.


[RESOLVED] What could be the cause of these UE4Editor build errors
#6

FYI, the pull request was accepted. So it seems we can do the same for future missing sub-includes.


#7

Yeah I think the trick is to always post pull requests to their master branch. They hardly accept anything on their other branches unless super mission critical.