Hello!
TL;DR
Before upgrading to 5.6 our process below worked completely fine. In our 5.6.1 source project, no matter how we exclude MetaHuman plugins from our project and its plugins, MetaHuman is still being compiled every single time after deleting the project’s Intermediate. UBT seems to be relying on the UnrealEditor.uhtmanifest in the project’s Intermediate folder to determine if it should build MetaHuman and not MetaHuman’s various modules’ Intermediate directories.
- Project Configuration is Correct: pproj.uproject and all project plugin being compiled properly disable all MetaHuman plugins in their .uplugin files
- No Direct Dependencies: Zero MetaHuman references found in project or its plugin source code or Build.cs files
- Engine-Level Inclusion: UnrealEditor.uhtmanifest shows there are 40+ MetaHuman modules being processed by UHT despite being disabled
We noticed that Engine\Source\Programs\LiveLinkHub\Source\LiveLinkHub.Target.cs does default to enabling MetaHumanLiveLink which does list MetaHumanCoreTech as a plugin dependency.
What can we do, aside from removing MetaHuman’s files to ensure that MetaHuman is not being built every time one of our plugins and its dependencies gets built? This is killing our validate times.
Our Setup
Our source 5.6.1 project consists of a main source project and multiple source plugin projects. We have a plugin build pipeline that we use for validates. We’ve been using this pipeline since 5.0 and after updating to 5.6 it seems that MetaHuman plugins compile no matter what. Neither our project nor our plugins has any dependencies on MetaHuman at all and we explicitly disable all MetaHuman plugins in our .uproject file.
Steps in Our Build Process
1. Sync Source Code (P4)
2. Generate Project Files
- Create a temporary uproject (pproj.uproject) in a temp directory. The uproject is configured with enabled plugin dependencies and explicitly disabled MetaHuman plugins
- Create file system junctions linking plugin dependencies from their code stream locations
- Set up the project structure required for building
[Image Removed]
3. Build Plugin
We execute:
\\Engine\\Build\\BatchFiles\\Build.bat UnrealEditor Win64 Development - nocompileeditor r:/temp/pproj/pproj.uproject -WaitMutexNow the folder looks properly like this:
[Image Removed]
This triggers a build of the plugins defined in the .uproject (intended) as well as MetaHuman source files (unintended).
4. Build Again Right Away
- Without deleting Intermediate build again with the same command.
- Nothing builds, as intended
5. Delete Intermediate and Build Again
The plugins do not build since they have their own Intermediate folders however notice that all the MetaHuman source files build again.
And a look at the UnrealEditor.uhtmanifest in Intermediate shows why: there are 40+ MetaHuman modules being processed by UHT despite being disabled in my project’s
pprop.uproject.
I don’t understand how MetaHuman source files (and only those) are being built by our project when we not only don’t use anything to do with MetaHuman but excplicitly disable them in our uproject/uplugin files.
Thanks again for any insights!!