What causes a particular module to be referenced in the .uhtmanifest file?

So the {MyProjectName}.uhtmanifest file is something that is generated by the UnrealHeaderTool (UHT). This manifest includes a long list of modules that were presumably gathered by some process scanning all the .Build.cs files in the project / engine.

I have a module that is listed as a dependency for my project (in my {MyProjectName}.Build.cs file) - but it does not show up in the generated .uhtmanifest file, and because of that I am getting some errors with the compiler trying to locate certain headers during nativization of content (or the building of a tool for use in the nativizing process).

The command being run (which fails) is essentially “UnrealHeaderTool “{MyProjectName}.uproject” “{MyProjectName}\Intermediate\Build\Win64{MyProjectName}\Development{MyProjectName}.uhtmanifest” -LogCmds=“loginit warning, logexit warning, logdatabase error” -Unattended -WarningsAsErrors”.

The actual error occurs when processing this generated file:


I have looked extensively in documentation, etc. to find any info on what causes some modules to be included in the .uhtmanifest file and some to not, without finding much info. I’m thinking that if the module I need was included there, that this would indicate that the build system had the info to find the include paths needed to compile that generated code. There does not seem to be any rhyme or reason why some modules are included (i.e. “LinearTimecode”, “IOSRuntimeSettings” since my project is for Win64, etc) and yet others aren’t even though they may be explicitly listed in various .Build.cs files.

So - what process governs the modules included in the .uhtmanifest and how can I be sure that a module is considered necessary? Thanks for any info!