Build Configuration

Configure how the engine is built.

Windows
MacOS
Linux

In addition to being added to the generated UE4 project under the Config/UnrealBuildTool folder, UnrealBuildTool reads settings from XML config files in the following locations:

  • Engine/Saved/UnrealBuildTool/BuildConfiguration.xml

  • User Folder/AppData/Roaming/Unreal Engine/UnrealBuildTool/BuildConfiguration.xml

  • My Documents/Unreal Engine/UnrealBuildTool/BuildConfiguration.xml

Keep reading to learn more about the following properties, which help to set and customize build configuration(s).

BuildConfiguration

bGeneratedSYMFile

Whether to generate dSYM files Lists Architectures that you want to build

bEnableAddressSanitizer

Enables address sanitizer (ASan)

bEnableThreadSanitizer

Enables thread sanitizer (TSan)

bEnableUndefinedBehaviorSanitizer

Enables undefined behavior sanitizer (UBSan)

BaseLogFileName

Specifies the file to use for logging

bAllowDistccLocalFallback

When enabled allows DMUCS/Distcc to fallback to local compilation when remote compiling fails. Defaults to true as separation of pre-process and compile stages can introduce non-fatal errors.

bVerboseDistccOutput

When true enable verbose distcc output to aid debugging.

DistccExecutablesPath

Path to the Distcc and DMUCS executables.

DMUCSCoordinator

DMUCS coordinator hostname or IP address.

DMUCSDistProp

The DMUCS distinguishing property value to request for compile hosts.

bXGENoWatchdogThread

Whether to use the no_watchdog_thread option to prevent VS2015 toolchain stalls.

bShowXGEMonitor

Whether to display the XGE build monitor.

bStopXGECompilationAfterErrors

When enabled, XGE will stop compiling targets after a compile error occurs. Recommended, as it saves computing resources for others.

bWriteSolutionOptionFile

Whether to write a solution option (suo) file for the sln

bAddFastPDBToProjects

Whether to add the -FastPDB option to build command lines by default

bUsePerFileIntellisense

Whether to generate per-file intellisense data

bEditorDependsOnShaderCompileWorker

Whether to include a dependency on ShaderCompileWorker when generating project files for the editor.

bDebugBuildsActuallyUseDebugCRT

Enables the debug C++ runtime (CRT) for debug builds. By default we always use the release runtime, since the debug version isn't particularly useful when debugging Unreal Engine projects, and linking against the debug CRT libraries forces our third party library dependencies to also be compiled using the debug CRT (and often perform more slowly). Often it can be inconvenient to require a separate copy of the debug versions of third party static libraries simply so that you can debug your program's code.

bUseInlining

Enable inlining for all modules.

bUseDebugLiveCodingConsole

Whether to enable support for live coding

bUseXGEController

Whether the XGE controller worker and modules should be included in the engine build. These are required for distributed shader compilation using the XGE interception interface.

bUseUnityBuild

Whether to unify C++ code into larger files for faster compilation.

bForceUnityBuild

Whether to force C++ source files to be combined into larger files for faster compilation.

bUseAdaptiveUnityBuild

Use a heuristic to determine which files are currently being iterated on and exclude them from unity blobs, result in faster incremental compile times. The current implementation uses the read-only flag to distinguish the working set, assuming that files will be made writable by the source control system if they are being modified. This is true for Perforce, but not for Git.

bAdaptiveUnityDisablesOptimizations

Disable optimization for files that are in the adaptive non-unity working set.

bAdaptiveUnityDisablesPCH

Disables force-included PCHs for files that are in the adaptive non-unity working set.

bAdaptiveUnityDisablesProjectPCHForProjectPrivate

Backing storage for bAdaptiveUnityDisablesProjectPCH.

bAdaptiveUnityCreatesDedicatedPCH

Creates a dedicated PCH for each source file in the working set, allowing faster iteration on cpp-only changes.

bAdaptiveUnityEnablesEditAndContinue

Creates a dedicated PCH for each source file in the working set, allowing faster iteration on cpp-only changes.

MinGameModuleSourceFilesForUnityBuild

The number of source files in a game module before unity build will be activated for that module. This allows small game modules to have faster iterative compile times for single files, at the expense of slower full rebuild times. This setting can be overridden by the bFasterWithoutUnity option in a module's Build.cs file.

bShadowVariableErrors

Forces shadow variable warnings to be treated as errors on platforms that support it.

bUndefinedIdentifierErrors

Forces the use of undefined identifiers in conditional expressions to be treated as errors.

bUseFastMonoCalls

New Monolithic Graphics drivers have optional "fast calls" replacing various D3d functions

bUseFastSemanticsRenderContexts

New Xbox driver supports a "fast semantics" context type. This switches it on for the immediate and deferred contexts Try disabling this if you see rendering issues and/or crashes inthe Xbox RHI.

NumIncludedBytesPerUnityCPP

An approximate number of bytes of C++ code to target for inclusion in a single unified C++ file.

bStressTestUnity

Whether to stress test the C++ unity build robustness by including all C++ files files in a project from a single unified file.

bDisableDebugInfo

Whether to globally disable debug info generation; see DebugInfoHeuristics.cs for per-config and per-platform options.

bDisableDebugInfoForGeneratedCode

Whether to disable debug info generation for generated files. This improves link times for modules that have a lot of generated glue code.

bOmitPCDebugInfoInDevelopment

Whether to disable debug info on PC in development builds (for faster developer iteration, as link times are extremely fast with debug info disabled).

bUsePDBFiles

Whether PDB files should be used for Visual C++ builds.

bUsePCHFiles

Whether PCH files should be used.

MinFilesUsingPrecompiledHeader

The minimum number of files that must use a pre-compiled header before it will be created and used.

bForcePrecompiledHeaderForGameModules

When enabled, a precompiled header is always generated for game modules, even if there are only a few source files in the module. This greatly improves compile times for iterative changes on a few files in the project, at the expense of slower full rebuild times for small game projects. This can be overridden by setting MinFilesUsingPrecompiledHeaderOverride in a module's Build.cs file.

bUseIncrementalLinking

Whether to use incremental linking or not. Incremental linking can yield faster iteration times when making small changes. Currently disabled by default because it tends to behave a bit buggy on some computers (PDB-related compile errors).

bAllowLTCG

Whether to allow the use of link time code generation (LTCG).

bPGOProfile

Whether to enable Profile Guided Optimization (PGO) instrumentation in this build.

bPGOOptimize

Whether to optimize this build with Profile Guided Optimization (PGO).

bAllowASLRInShipping

Whether to allow the use of ASLR (address space layout randomization) if supported. Only applies to shipping builds.

bSupportEditAndContinue

Whether to support edit and continue. Only works on Microsoft compilers.

bOmitFramePointers

Whether to omit frame pointers or not. Disabling is useful for e.g. memory profiling on the PC.

bUseMallocProfiler

If true, then enable memory profiling in the build (defines USE_MALLOC_PROFILER=1 and forces bOmitFramePointers=false).

bUseSharedPCHs

Enables "Shared PCHs", a feature which significantly speeds up compile times by attempting to share certain PCH files between modules that UBT detects is including those PCH's header files.

bUseShippingPhysXLibraries

True if Development and Release builds should use the release configuration of PhysX/APEX.

bUseCheckedPhysXLibraries

True if Development and Release builds should use the checked configuration of PhysX/APEX. if bUseShippingPhysXLibraries is true this is ignored.

bCheckLicenseViolations

Tells the UBT to check if module currently being built is violating EULA.

bBreakBuildOnLicenseViolation

Tells the UBT to break build if module currently being built is violating EULA.

bUseFastPDBLinking

Whether to use the :FASTLINK option when building with /DEBUG to create local PDBs on Windows. Fast, but currently seems to have problems finding symbols in the debugger.

bCreateMapFile

Outputs a map file as part of the build.

bCheckSystemHeadersForModification

Whether headers in system paths should be checked for modification when determining outdated actions.

bFlushBuildDirOnRemoteMac

Whether to clean Builds directory on a remote Mac before building.

bPrintToolChainTimingInfo

Whether to write detailed timing info from the compiler and linker.

bParseTimingInfoForTracing

Whether to parse timing data into a tracing file compatible with chrome://tracing.

bPublicSymbolsByDefault

Whether to expose all symbols as public by default on POSIX platforms

CppStandard

Which C++ stanard to use for compiling this target

bStripSymbols

Whether to strip iOS symbols or not (implied by Shipping config)

bIgnoreOutdatedImportLibraries

Whether to ignore import library files that are out of date when building targets. Set this to true to improve iteration time. By default we don't bother relinking targets if only a dependent .lib has changed, as chances are that the import library wasn't actually different unless a dependent header file of this target was also changed, in which case the target would be rebuilt automatically.

bPrintDebugInfo

Whether debug info should be written to the console.

bLogDetailedActionStats

Whether to log detailed action stats. This forces local execution.

bAllowHybridExecutor

Whether the hybrid executor will be used (a remote executor and local executor)

bAllowXGE

Whether XGE may be used.

bAllowSNDBS

Whether SN-DBS may be used.

bUseUBTMakefiles

Enables support for very fast iterative builds by caching target data. Turning this on causes Unreal Build Tool to emit 'UBT Makefiles' for targets when they're built the first time. Subsequent builds will load these Makefiles and begin outdatedness checking and build invocation very quickly. The caveat is that if source files are added or removed to the project, UBT will need to gather information about those in order for your build to complete successfully. Currently, you must run the project file generator after adding/removing source files to tell UBT to re-gather this information.

bAllowDistcc

Whether DMUCS/Distcc may be used. Distcc requires some setup - so by default disable it so we don't break local or remote building

bAllowParallelExecutor

Whether to allow using parallel executor on Windows.

HybridExecutor

MaxLocalActions

Maximum number of actions to execute locally

BuildMode

bIgnoreJunk

Whether to skip checking for files identified by the junk manifest

ProjectFileGenerator

DisablePlatformProjectGenerators

Platforms to disable native project file generators for. Platforms with native project file generators typically require IDE extensions to be installed.

Format

Default list of project file formats to generate

bGenerateIntelliSenseData

True if intellisense data should be generated (takes a while longer)

bIncludeDocumentation

True if we should include documentation in the generated projects

bAllDocumentationLanguages

True if all documentation languages should be included in generated projects, otherwise only "INT" will be included

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeBuildSystemFiles

True if build system files should be included

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeLocalizationFiles

True if we should include localization files (.int/.kor/etc files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

bIncludeTempTargets

Whether to include temporary targets generated by UAT to support content only projects with non-default settings

bIncludeDotNETCoreProjects

True if we should include .NET Core projects in the generated solution

bKeepSourceSubDirectories

True if we should reflect "Source" sub-directories on disk in the master project as master project directories. This arguably adds some visual clutter to the master project, but is truer to the on-disk file organization.

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

bIncludeTestAndShippingConfigs

Whether we should include configurations for "Test" and "Shipping" in generated projects (pass "-NoShippingConfigs" to disable this)

LocalExecutor

ProcessorCountMultiplier

Processor count multiplier for local execution. Can be below 1 to reserve CPU for other tasks. When using the local executor (not XGE), run a single action on each CPU core. Note that you can set this to a larger value to get slightly faster build times in many cases, but your computer's responsiveness during compiling may be much worse.

MaxProcessorCount

Maximum processor count for local execution.

ParallelExecutor

ProcessorCountMultiplier

Processor count multiplier for local execution. Can be below 1 to reserve CPU for other tasks.

MaxProcessorCount

Maximum processor count for local execution.

bStopCompilationAfterErrors

When enabled, will stop compiling targets after a compile error occurs.

SNDBS

ProcessorCountMultiplier

Processor count multiplier for local execution. Can be below 1 to reserve CPU for other tasks.

MaxProcessorCount

Maximum processor count for local execution.

CLionGenerator

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

CMakefileGenerator

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

CodeLiteGenerator

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

EddieProjectFileGenerator

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

KDevelopGenerator

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

MakefileGenerator

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

QMakefileGenerator

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

VSCodeProjectFileGenerator

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

VCProjectFileGenerator

Version

The version of Visual Studio to generate project files for.

bBuildLiveCodingConsole

Whether to include a dependency on LiveCodingConsole when building targets that support live coding.

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

XcodeProjectFileGenerator

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

SourceFileWorkingSet

Provider

Sets the provider to use for determining the working set

RepositoryPath

Sets the path to use for the repository. Interpreted relative to the UE root directory (ie. folder above the Engine folder) if relative.

GitPath

Sets the path to use for the Git executable. Defaults to "git" (assuming it's in the PATH).

VCMacProjectFileGenerator

Version

The version of Visual Studio to generate project files for.

bIncludeDocumentation

True if we should include documentation in the generated projects

bUsePrecompiled

True if build targets should pass the -useprecompiled argument

bIncludeEngineSource

True if we should include engine source in the generated solution

bIncludeEnterpriseSource

Whether to include enterprise source in the generated solution

bIncludeShaderSource

True if shader source files should be included in the generated projects

bIncludeConfigFiles

True if we should include config files (.ini files) in the generated project

bIncludeTemplateFiles

True if we should include template files (.template files) in the generated project

IncludeEnginePrograms

True if we should include program projects in the generated solution

MasterProjectName

Name of the master project file (e.g. base file name for the solution file for Visual Studio, or the Xcode project file on Mac)

bMasterProjectNameFromFolder

If true, sets the master project name according to the name of the folder it's in

IOSToolChain

IOSSDKVersion

Which version of the iOS SDK to target at build time

BuildIOSVersion

Which version of the iOS to allow at build time

bUseDangerouslyFastMode

If this is set, then we don't do any post-compile steps except moving the executable into the proper spot on the Mac

RemoteMac

ServerName

These two variables will be loaded from XML config file in XmlConfigLoader.Init()

UserName

The remote username

SshPrivateKey

Instead of looking for RemoteToolChainPrivate.key in the usual places (Documents/Unreal Engine/UnrealBuildTool/SSHKeys, Engine/Build/SSHKeys), this private key will be used if set

RsyncAuthentication

The authentication used for Rsync (for the -e rsync flag)

SshAuthentication

The authentication used for SSH (probably similar to RsyncAuthentication)

HTML5Platform

HTML5Architecture

Architecture to build for.

UEBuildConfiguration

bForceHeaderGeneration

If true, force header regeneration. Intended for the build machine

bDoNotBuildUHT

If true, do not build UHT, assume it is already built

bFailIfGeneratedCodeChanges

If true, fail if any of the generated header files is out of date.

bAllowHotReloadFromIDE

True if hot-reload from IDE is allowed

bForceDebugUnrealHeaderTool

If true, the Debug version of UnrealHeaderTool will be build and run instead of the Development version.

WindowsPlatform

Compiler

Version of the compiler toolchain to use on Windows platform. A value of "default" will be changed to a specific version at UBT startup.

CompilerVersion

The specific toolchain version to use. This may be a specific version number (eg. "14.13.26128") or the string "Latest" to select the newest available version. By default, we use the toolchain version indicated by WindowsPlatform.DefaultToolChainVersion if it is available, or the latest version otherwise.

WindowsSdkVersion

The specific Windows SDK version to use. This may be a specific version number (eg. "8.1", "10.0", or "10.0.10150.0") or the string "Latest" to select the newest available version. By default, we use the Windows SDK version indicated by WindowsPlatform.DefaultWindowsSdkVersion if it is available, or the latest version otherwise.

StaticAnalyzer

The static analyzer to use

bStrictConformanceMode

Enables strict standard conformance mode (/permissive-) in VS2017+.

PCHMemoryAllocationFactor

Determines the amount of memory that the compiler allocates to construct precompiled headers (/Zm).

bClangTimeTrace

(Experimental) Appends the -ftime-trace argument to the command line for Clang, to output a JSON file containing a timeline for the compile. See http://aras-p.info/blog/2019/01/16/time-trace-timeline-flame-chart-profiler-for-Clang/ for more info.

bCompilerTrace

Outputs compile timing information so that it can be analyzed.

WindowsTargetRules

ObjSrcMapFile

Whether we should export a file containing .obj->source file mappings.

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback