Unreal Build System

Unreal Build System

Unreal Build System refers to a collection of tools that automate the process of building Unreal Engine 4 (UE4). At a high level, UnrealBuildTool and UnrealHeaderTool support Unreal Build System. This guide provides and overview of UnrealBuildTool and UnrealHeaderTool, including a brief discussion about 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 Unreal Build System for your own projects. Finally, we've included some guides for advanced users, 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

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

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.

Using Unreal Build System

Before using Unreal Build System, 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.

Setup

Configuration

Advanced Topics