This is very common when dealing with
SkookumScriptGenerator. The problem is that
SkookumScriptGenerator is ran by UnrealHeaderTool (UHT), but UHT only runs when it detects changes in certain key files. So sometimes you might make modifications to something in
SkookumScriptGenerator and UHT doesn’t detect the change and so you never see your changes reflected.
The key to watch for in a build is the output:
1>SkookumScript: Generating C++ script bindings for 49 engine modules and 1 project module(s)
Your number of engine modules might vary, but the key takeaway is that when UHT runs
SkookumScriptGenerator, this is the message that is generated.
If for whatever reason you just can’t get UHT to run, you can always clean the UnrealHeaderTool project and build again. This incurs a bit more build time than the next method.
If you want to debug the script generation and manually invoke/force UHT to run, here’s how you do it.
- Build the project normally and look for the output that indicates that UHT ran, you need to get an execution line to do this, so if needed, just clean UHT once as I’ve described above. Just before the “Generating C++ script bindings” log, you will see output that looks like this.
1> Running UnrealHeaderTool "C:\Perforce\MyProject\MyProject.uproject" "C:\Perforce\MyProject\Intermediate\Build\Win64\MyProjectEditor\Development\MyProjectEditor.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -abslog="C:\Perforce\UnrealEngine\Engine\Programs\UnrealBuildTool\Log_UHT.txt"
Copy everything after
Running UnrealHeaderTool, the entire rest of the line, double quotes and all
Right-click edit the properties of the UnrealHeaderTool program
Paste the text that you copied into the
Command Arguments field and hit ok
Right-click on UnrealHeaderTool and set it as Startup Project
Hit Play, you can now hit breakpoints in
Just don’t forget to set your game as the startup project when you’re done. Once you have this setup, you can quickly switch the startup project to UHT anytime you want to force the generator to run or if you need to debug some of that code.