mirror of
https://github.com/Ed94/UE5_Study.git
synced 2024-11-10 03:44:53 -08:00
Ed_
95641ae944
next steps: - Lookup `BuildConfiguration` and see if it should have a breakdown - For the "Parse and build targets" prioritize local builds or now and ignore the remote builds sections since its only for mac. - Figure out what `DirectoryReference` is and what `QueueProjectDirectory` does from `FileMetadataPrefetch`. - Quickly skim `SourceFileWorkingSet` and breakdown the `Build` function of `BuildMode`
1.8 KiB
1.8 KiB
Unreal Build Tool
Located in Engine\Source\Programs\UnrealBuildTool\
C# solution.
Main Loop:
Located in UnrealBuildTool.cs
- Start peformance info capture
- Parse command line arguments
- Parse global options
- Logging & UBT assembly setup
- Set working directory to Engine/Source
- Setup build mode
- Setup tool mode options
- Get engine directory contents
- Read XML Configurataion
- Create UBT run file
- "Lock Branch"
- Register build platforms
- Create ToolMode which will handle the rest
- 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:
- Output arguments & setup the logger
- Read the xml configuration files
- Apply architecture configs (platform specific configs for a target)
- More logging setup
- Create build configuraiton object
- Parse and build targets
- Pase all target descriptors
- Clean all targets with
CleanMode
(a tool mode) that havebRebuild
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 andBuild
.