Build Tools

Unreal Build System

There are a collection of tools for automating the process of building Unreal Engine 4 (UE4), including UnrealBuildTool and UnrealHeaderTool, and this guide provides an overview of these build tools, including a brief overview of UE4's modular architecture. If you want to use this collection of build tools, we've included some guides that will help you set up and configure a build process for your own projects. Finally, we've included some guides for advanced users, specifically for those wanting to learn more about the Include-What-You-Use (IWYU) dependency model and the BuildGraph scripting system.

If you would like to debug UnrealBuildTool or UnrealAutomationTool on Mac OS X, please install MonoDevelop 4.2.2 and Mono 3.2.7.


UnrealBuildTool (UBT) is a custom tool that manages the process of building the UE4 source code across a variety of build configurations. Check out BuildConfiguration.cs to explore various user-configurable build options.


UnrealHeaderTool (UHT) is a custom parsing and code-generation tool that supports the UObject system. Code compilation happens in two phases:

  1. UHT is invoked, which parses the C++ headers for Unreal-related class metadata and generates custom code to implement the various UObject-related features.

  2. The normal C++ compiler is invoked to compile the results.

When compiling, it is possible for either tool to emit errors, so be sure to look carefully.

Modular Architecture

UE4 is split into many modules. Each module has a .build.cs file that controls how it is built, including options for defining module dependencies, additional libraries, include paths, etc. By default, these modules are compiled into DLLs and loaded by a single executable. You can choose to build a monolithic executable in the BuildConfiguration.cs file.

It is important to understand that the build process executes independently of any project files for the development environment, such as .sln or .vcproj files (for Visual Studio). These files are useful to have for editing purposes though, so there is a tool being provided to generate them dynamically (based on the contents of your project directory tree). You can run this tool with the GenerateProject.bat file located in your [Root UE4] directory.

Running GenerateProject.bat from time-to-time will keep your code editor up-to-date with files that are being added to (or being removed) from disk.



Advanced Topics