UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Build.h File Reference

Go to the source code of this file.

Macros

#define UE_BUILD_DEBUG   0
 
#define UE_BUILD_DEVELOPMENT   0
 
#define UE_BUILD_TEST   0
 
#define UE_BUILD_SHIPPING   0
 
#define UE_GAME   0
 
#define UE_CLIENT   0
 
#define UE_EDITOR   0
 
#define UE_BUILD_SHIPPING_WITH_EDITOR   0
 
#define UE_BUILD_DOCS   0
 
#define UE_SERVER   0
 
#define FINAL_RELEASE_DEBUGCONSOLE   (#)
 
#define FINAL_RELEASE   (#)
 
#define SHIPPING_PC_GAME   (#)
 
#define UE_BUILD_FINAL_RELEASE   (#)
 
#define WITH_EDITOR   0
 
#define WITH_ENGINE   0
 
#define WITH_UNREAL_DEVELOPER_TOOLS   0
 
#define WITH_UNREAL_TARGET_DEVELOPER_TOOLS   WITH_UNREAL_DEVELOPER_TOOLS
 
#define WITH_PLUGIN_SUPPORT   0
 
#define WITH_ACCESSIBILITY   1
 
#define WITH_PERFCOUNTERS   0
 
#define USE_SERVER_PERF_COUNTERS   ((UE_SERVER || UE_EDITOR) && WITH_PERFCOUNTERS)
 
#define ENABLE_PGO_PROFILE   0
 
#define WITH_AUTOMATION_WORKER   !UE_BUILD_SHIPPING
 
#define IS_MONOLITHIC   0
 
#define IS_PROGRAM   0
 
#define WITH_HOT_RELOAD   (!IS_MONOLITHIC && !UE_BUILD_SHIPPING && !UE_BUILD_TEST && !UE_GAME && !UE_SERVER)
 
#define WITH_LIVE_CODING   0
 
#define WITH_RELOAD   (WITH_HOT_RELOAD || WITH_LIVE_CODING)
 
#define WITH_TEXT_ARCHIVE_SUPPORT   WITH_EDITORONLY_DATA
 
#define WITH_STATE_STREAM   0
 
#define CHECK_PUREVIRTUALS   0
 
#define USE_NULL_RHI   0
 
#define USE_LOGGING_IN_SHIPPING   0
 
#define USE_CHECKS_IN_SHIPPING   0
 
#define USE_ENSURES_IN_SHIPPING   USE_CHECKS_IN_SHIPPING
 
#define ALLOW_CONSOLE_IN_SHIPPING   0
 
#define FORCE_USE_STATS   0
 
#define FORCE_ANSI_ALLOCATOR   0
 
#define LOOKING_FOR_PERF_ISSUES   (0 && !(UE_BUILD_SHIPPING))
 
#define USE_NETWORK_PROFILER   !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
 
#define VALIDATE_UBER_GRAPH_PERSISTENT_FRAME   (!(UE_BUILD_SHIPPING || UE_BUILD_TEST))
 
#define UE_BLUEPRINT_EVENTGRAPH_FASTCALLS   1
 
#define USE_CIRCULAR_DEPENDENCY_LOAD_DEFERRING   1
 
#define USE_DEFERRED_DEPENDENCY_CHECK_VERIFICATION_TESTS   (USE_CIRCULAR_DEPENDENCY_LOAD_DEFERRING && 0)
 
#define ALLOW_PROFILEGPU_IN_TEST   0
 
#define ALLOW_PROFILEGPU_IN_SHIPPING   0
 
#define WITH_PROFILEGPU   (!(UE_BUILD_SHIPPING || UE_BUILD_TEST) || (UE_BUILD_TEST && ALLOW_PROFILEGPU_IN_TEST) || (UE_BUILD_SHIPPING && ALLOW_PROFILEGPU_IN_SHIPPING))
 
#define ALLOW_DUMPGPU_IN_TEST   1
 
#define ALLOW_DUMPGPU_IN_SHIPPING   0
 
#define WITH_DUMPGPU   (!(UE_BUILD_SHIPPING || UE_BUILD_TEST) || (UE_BUILD_TEST && ALLOW_DUMPGPU_IN_TEST) || (UE_BUILD_SHIPPING && ALLOW_DUMPGPU_IN_SHIPPING))
 
#define ALLOW_GPUDEBUGCRASH_IN_TEST   1
 
#define ALLOW_GPUDEBUGCRASH_IN_SHIPPING   0
 
#define WITH_GPUDEBUGCRASH   (!(UE_BUILD_SHIPPING || UE_BUILD_TEST) || (UE_BUILD_TEST && ALLOW_GPUDEBUGCRASH_IN_TEST) || (UE_BUILD_SHIPPING && ALLOW_GPUDEBUGCRASH_IN_SHIPPING))
 
#define ALLOW_CHEAT_CVARS_IN_TEST   1
 
#define DISABLE_CHEAT_CVARS   (UE_BUILD_SHIPPING || (UE_BUILD_TEST && !ALLOW_CHEAT_CVARS_IN_TEST))
 
#define ALLOW_HANG_DETECTION   1
 
#define USE_HANG_DETECTION   (ALLOW_HANG_DETECTION && !WITH_EDITORONLY_DATA && !IS_PROGRAM && !UE_BUILD_DEBUG && !ENABLE_PGO_PROFILE && !USING_THREAD_SANITISER && !USING_INSTRUMENTATION)
 
#define ALLOW_HITCH_DETECTION   0
 
#define AGGRESSIVE_MEMORY_SAVING   0
 
#define USE_PER_MODULE_UOBJECT_BOOTSTRAP   0
 
#define USE_HITCH_DETECTION   (ALLOW_HITCH_DETECTION && !WITH_EDITORONLY_DATA && !IS_PROGRAM && !UE_BUILD_DEBUG && !USING_THREAD_SANITISER && !USING_INSTRUMENTATION)
 
#define PRESERVE_LOG_BACKUPS_IN_SHIPPING   1
 
#define ENABLE_RHI_VALIDATION   (UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT)
 
#define GET_DEVICE_ID_UNAVAILABLE   0
 
#define UE_IS_COOKED_EDITOR   0
 
#define WITH_IOSTORE_IN_EDITOR   WITH_EDITOR
 
#define UE_FORCE_USE_IOSTORE   0
 
#define UE_FORCE_USE_PAKS   0
 
#define UE_WITH_IRIS   0
 
#define PRELOAD_BINARY_CONFIG   1
 
#define WITH_COTF   ((WITH_ENGINE) && !(IS_PROGRAM || UE_BUILD_SHIPPING))
 
#define ALLOW_OTHER_PLATFORM_CONFIG   WITH_UNREAL_DEVELOPER_TOOLS
 
#define WITH_PROCESS_PRIORITY_CONTROL   0
 
#define UE_SUPPORT_FOR_ACTOR_TICK_DISABLE   0
 

Macro Definition Documentation

◆ AGGRESSIVE_MEMORY_SAVING

#define AGGRESSIVE_MEMORY_SAVING   0

◆ ALLOW_CHEAT_CVARS_IN_TEST

#define ALLOW_CHEAT_CVARS_IN_TEST   1

◆ ALLOW_CONSOLE_IN_SHIPPING

#define ALLOW_CONSOLE_IN_SHIPPING   0

◆ ALLOW_DUMPGPU_IN_SHIPPING

#define ALLOW_DUMPGPU_IN_SHIPPING   0

◆ ALLOW_DUMPGPU_IN_TEST

#define ALLOW_DUMPGPU_IN_TEST   1

◆ ALLOW_GPUDEBUGCRASH_IN_SHIPPING

#define ALLOW_GPUDEBUGCRASH_IN_SHIPPING   0

◆ ALLOW_GPUDEBUGCRASH_IN_TEST

#define ALLOW_GPUDEBUGCRASH_IN_TEST   1

◆ ALLOW_HANG_DETECTION

#define ALLOW_HANG_DETECTION   1

◆ ALLOW_HITCH_DETECTION

#define ALLOW_HITCH_DETECTION   0

◆ ALLOW_OTHER_PLATFORM_CONFIG

#define ALLOW_OTHER_PLATFORM_CONFIG   WITH_UNREAL_DEVELOPER_TOOLS

◆ ALLOW_PROFILEGPU_IN_SHIPPING

#define ALLOW_PROFILEGPU_IN_SHIPPING   0

◆ ALLOW_PROFILEGPU_IN_TEST

#define ALLOW_PROFILEGPU_IN_TEST   0

◆ CHECK_PUREVIRTUALS

#define CHECK_PUREVIRTUALS   0

Checks to see if pure virtual has actually been implemented, this is normally run as a CIS process and is set (indirectly) by UBT

See also
Core.h
ObjectMacros.h

◆ DISABLE_CHEAT_CVARS

#define DISABLE_CHEAT_CVARS   (UE_BUILD_SHIPPING || (UE_BUILD_TEST && !ALLOW_CHEAT_CVARS_IN_TEST))

◆ ENABLE_PGO_PROFILE

#define ENABLE_PGO_PROFILE   0

Whether we are compiling a PGO instrumented build.

◆ ENABLE_RHI_VALIDATION

#define ENABLE_RHI_VALIDATION   (UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT)

◆ FINAL_RELEASE

#define FINAL_RELEASE   (#)

◆ FINAL_RELEASE_DEBUGCONSOLE

#define FINAL_RELEASE_DEBUGCONSOLE   (#)

◆ FORCE_ANSI_ALLOCATOR

#define FORCE_ANSI_ALLOCATOR   0

Set to true to force an ansi allocator instead of redirecting to FMemory.

◆ FORCE_USE_STATS

#define FORCE_USE_STATS   0

Compile flag to force stats to be compiled

◆ GET_DEVICE_ID_UNAVAILABLE

#define GET_DEVICE_ID_UNAVAILABLE   0

◆ IS_MONOLITHIC

#define IS_MONOLITHIC   0

Whether we want a monolithic build (no DLLs); must be defined by UBT

◆ IS_PROGRAM

#define IS_PROGRAM   0

Whether we want a program (shadercompilerworker, fileserver) or a game; must be defined by UBT

◆ LOOKING_FOR_PERF_ISSUES

#define LOOKING_FOR_PERF_ISSUES   (0 && !(UE_BUILD_SHIPPING))

This is a global setting which will turn on logging / checks for things which are considered especially bad for consoles. Some of the checks are probably useful for PCs also.

Throughout the code base there are specific things which dramatically affect performance and/or are good indicators that something is wrong with the content. These have PERF_ISSUE_FINDER in the comment near the define to turn the individual checks on.

e.g. if defined(PERF_LOG_DYNAMIC_LOAD_OBJECT) || LOOKING_FOR_PERF_ISSUES

If one only cares about DLO, then one can enable the PERF_LOG_DYNAMIC_LOAD_OBJECT define. Or one can globally turn on all PERF_ISSUE_FINDERS :-)

◆ PRELOAD_BINARY_CONFIG

#define PRELOAD_BINARY_CONFIG   1

◆ PRESERVE_LOG_BACKUPS_IN_SHIPPING

#define PRESERVE_LOG_BACKUPS_IN_SHIPPING   1

◆ SHIPPING_PC_GAME

#define SHIPPING_PC_GAME   (#)

◆ UE_BLUEPRINT_EVENTGRAPH_FASTCALLS

#define UE_BLUEPRINT_EVENTGRAPH_FASTCALLS   1

Enable fast calls for event thunks into an event graph that have no parameters

◆ UE_BUILD_DEBUG

#define UE_BUILD_DEBUG   0

◆ UE_BUILD_DEVELOPMENT

#define UE_BUILD_DEVELOPMENT   0

◆ UE_BUILD_DOCS

#define UE_BUILD_DOCS   0

◆ UE_BUILD_FINAL_RELEASE

#define UE_BUILD_FINAL_RELEASE   (#)

◆ UE_BUILD_SHIPPING

#define UE_BUILD_SHIPPING   0

◆ UE_BUILD_SHIPPING_WITH_EDITOR

#define UE_BUILD_SHIPPING_WITH_EDITOR   0

◆ UE_BUILD_TEST

#define UE_BUILD_TEST   0

◆ UE_CLIENT

#define UE_CLIENT   0

◆ UE_EDITOR

#define UE_EDITOR   0

◆ UE_FORCE_USE_IOSTORE

#define UE_FORCE_USE_IOSTORE   0

◆ UE_FORCE_USE_PAKS

#define UE_FORCE_USE_PAKS   0

◆ UE_GAME

#define UE_GAME   0

◆ UE_IS_COOKED_EDITOR

#define UE_IS_COOKED_EDITOR   0

◆ UE_SERVER

#define UE_SERVER   0

Whether compiling for dedicated server or not.

◆ UE_SUPPORT_FOR_ACTOR_TICK_DISABLE

#define UE_SUPPORT_FOR_ACTOR_TICK_DISABLE   0

◆ UE_WITH_IRIS

#define UE_WITH_IRIS   0

◆ USE_CHECKS_IN_SHIPPING

#define USE_CHECKS_IN_SHIPPING   0

◆ USE_CIRCULAR_DEPENDENCY_LOAD_DEFERRING

#define USE_CIRCULAR_DEPENDENCY_LOAD_DEFERRING   1

Enables code required for handling recursive dependencies during blueprint serialization

◆ USE_DEFERRED_DEPENDENCY_CHECK_VERIFICATION_TESTS

#define USE_DEFERRED_DEPENDENCY_CHECK_VERIFICATION_TESTS   (USE_CIRCULAR_DEPENDENCY_LOAD_DEFERRING && 0)

Enable validation of deferred dependencies loaded during blueprint serialization

◆ USE_ENSURES_IN_SHIPPING

#define USE_ENSURES_IN_SHIPPING   USE_CHECKS_IN_SHIPPING

If not defined follow the CHECK behavior since previously ensures were compiled in with checks

◆ USE_HANG_DETECTION

◆ USE_HITCH_DETECTION

◆ USE_LOGGING_IN_SHIPPING

#define USE_LOGGING_IN_SHIPPING   0

If not specified, disable logging in shipping

◆ USE_NETWORK_PROFILER

#define USE_NETWORK_PROFILER   !(UE_BUILD_SHIPPING || UE_BUILD_TEST)

Enable the use of the network profiler as long as we are not a Shipping or Test build

◆ USE_NULL_RHI

#define USE_NULL_RHI   0

Whether to use the null RHI.

◆ USE_PER_MODULE_UOBJECT_BOOTSTRAP

#define USE_PER_MODULE_UOBJECT_BOOTSTRAP   0

◆ USE_SERVER_PERF_COUNTERS

#define USE_SERVER_PERF_COUNTERS   ((UE_SERVER || UE_EDITOR) && WITH_PERFCOUNTERS)

Enable perf counters on dedicated servers

◆ VALIDATE_UBER_GRAPH_PERSISTENT_FRAME

#define VALIDATE_UBER_GRAPH_PERSISTENT_FRAME   (!(UE_BUILD_SHIPPING || UE_BUILD_TEST))

Enable validation of the Uber Graph's persistent frame's layout, this is useful to detect uber graph frame related corruption

◆ WITH_ACCESSIBILITY

#define WITH_ACCESSIBILITY   1

Whether we are compiling with Slate accessibility and automation support

◆ WITH_AUTOMATION_WORKER

#define WITH_AUTOMATION_WORKER   !UE_BUILD_SHIPPING

Whether we are compiling with automation worker functionality. Note that automation worker defaults to enabled in UE_BUILD_TEST configuration, so that it can be used for performance testing on devices

◆ WITH_COTF

#define WITH_COTF   ((WITH_ENGINE) && !(IS_PROGRAM || UE_BUILD_SHIPPING))

◆ WITH_DUMPGPU

◆ WITH_EDITOR

#define WITH_EDITOR   0

Whether we are compiling with the editor; must be defined by UBT

◆ WITH_ENGINE

#define WITH_ENGINE   0

Whether we are compiling with the engine; must be defined by UBT

◆ WITH_GPUDEBUGCRASH

◆ WITH_HOT_RELOAD

#define WITH_HOT_RELOAD   (!IS_MONOLITHIC && !UE_BUILD_SHIPPING && !UE_BUILD_TEST && !UE_GAME && !UE_SERVER)

Whether we support hot-reload. Currently requires a non-monolithic build and non-shipping configuration.

◆ WITH_IOSTORE_IN_EDITOR

#define WITH_IOSTORE_IN_EDITOR   WITH_EDITOR

◆ WITH_LIVE_CODING

#define WITH_LIVE_CODING   0

Make sure that live coding define is available. Normally this is supplied by UBT

◆ WITH_PERFCOUNTERS

#define WITH_PERFCOUNTERS   0

Enable perf counters

◆ WITH_PLUGIN_SUPPORT

#define WITH_PLUGIN_SUPPORT   0

Whether we are compiling with plugin support; must be defined by UBT

◆ WITH_PROCESS_PRIORITY_CONTROL

#define WITH_PROCESS_PRIORITY_CONTROL   0

◆ WITH_PROFILEGPU

◆ WITH_RELOAD

#define WITH_RELOAD   (WITH_HOT_RELOAD || WITH_LIVE_CODING)

Whether we support any type of live reloading

◆ WITH_STATE_STREAM

#define WITH_STATE_STREAM   0

◆ WITH_TEXT_ARCHIVE_SUPPORT

#define WITH_TEXT_ARCHIVE_SUPPORT   WITH_EDITORONLY_DATA

Whether we include support for text archive formats. Disabling support allows de-virtualizing archive calls and eliminating string constants for field names.

◆ WITH_UNREAL_DEVELOPER_TOOLS

#define WITH_UNREAL_DEVELOPER_TOOLS   0

Whether we are compiling with developer tools; must be defined by UBT

◆ WITH_UNREAL_TARGET_DEVELOPER_TOOLS

#define WITH_UNREAL_TARGET_DEVELOPER_TOOLS   WITH_UNREAL_DEVELOPER_TOOLS

Whether we are compiling with developer tools that may use other platforms or external connected devices, etc