UE5_Study/docs/Build & Automation System/UBT.md
Ed_ 82c6836078 Small progress on ubt doc
There was some additional info on ubtignore that I haven't written about yet as well.
2023-08-31 15:45:22 -04:00

2.6 KiB

Unreal Build Tool

Located in Engine\Source\Programs\UnrealBuildTool\
C# solution.

Main Loop

Located in UnrealBuildTool.cs

  1. Start peformance info capture
  2. Parse command line arguments
  3. Parse global options
  4. Logging & UBT assembly setup
  5. Set working directory to Engine/Source
  6. Setup build mode
  7. Setup tool mode options
  8. Get engine directory contents
  9. Read XML Configurataion
  10. Create UBT run file
  11. "Lock Branch"
  12. Register build platforms
  13. Create ToolMode which will handle the rest
  14. Close out

Global Options

Also located in same file.

Offical inline documentation:

Global options for UBT (any modes)

Commandline options are deffined using Epic's CommandLineAttribute.

ToolMode

Offical inline documentation:

Base class for standalone UBT modes. Different modes can be invoked using the -Mode=[Name] argument on the command line, where [Name] is determined by the ToolModeAttribute on a ToolMode derived class. The log system will be initialized before calling the mode, but little else.

-Mode is defined in GlobalOptions definition.

Has a single function:

public abstract int Execute(CommandLineArguments Arguments, ILogger Logger);

BuildMode

Derived from ToolMode, used to build a target.

Execute procedure Flow:

  1. Output arguments & setup the logger
  2. Read the xml configuration files
  3. Apply architecture configs (platform specific configs for a target)
  4. More logging setup
  5. Create build configuraiton object
  6. Parse and build targets
    • Pase all target descriptors
    • Clean all targets with CleanMode (a tool mode) that have bRebuild flagged.
    • Handle remote builds (Seems to be excluisvely Mac)
    • Handle local builds
      • Get all project directories & build options
      • For each project: create a SourceFileWorkingSet object and Build.
  7. Process the dumps to see if anything failed.
  8. Save Caches

BuildConfiguration Contains target agonstic settings.

QueueProjectDirectory

Used when retreving all project directories.

Will Enqueue a FileMetadataPrefetch.ScanProjectDirectory call for the directory with the prefecter.

ScanProjectDirectory

  1. Get all extension directoires for the target project directory
  2. For each directory
    • Enqueue a scan of the plugin directory (ScanPluginFolder, the Plugins folder)
    • Enqueue a scan of the project directory (ScanDirectoryTree, the Source folder)

Unreal.GetExtensionDirs will do an initial scan for Platform, Restricted, and BaseDirectories, and remove them from CachedDirectories based if any of options for doing so are set.

ScanPluginFolder