mirror of
https://github.com/Ed94/UE5_Study.git
synced 2024-11-12 20:54:51 -08:00
Ed_
82c6836078
There was some additional info on ubtignore that I haven't written about yet as well.
91 lines
2.6 KiB
Markdown
91 lines
2.6 KiB
Markdown
# 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:
|
|
|
|
```csharp
|
|
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
|
|
|
|
|