You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#ROBOMERGE-AUTHOR: ben.marsh #ROBOMERGE-SOURCE: CL 17474045 in //UE5/Main/... #ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530) [CL 17474069 by ben marsh in ue5-release-engine-test branch]
2990 lines
90 KiB
C#
2990 lines
90 KiB
C#
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using EpicGames.Core;
|
|
using UnrealBuildBase;
|
|
|
|
namespace UnrealBuildTool
|
|
{
|
|
/// <summary>
|
|
/// The type of target
|
|
/// </summary>
|
|
[Serializable]
|
|
public enum TargetType
|
|
{
|
|
/// <summary>
|
|
/// Cooked monolithic game executable (GameName.exe). Also used for a game-agnostic engine executable (UnrealGame.exe or RocketGame.exe)
|
|
/// </summary>
|
|
Game,
|
|
|
|
/// <summary>
|
|
/// Uncooked modular editor executable and DLLs (UnrealEditor.exe, UnrealEditor*.dll, GameName*.dll)
|
|
/// </summary>
|
|
Editor,
|
|
|
|
/// <summary>
|
|
/// Cooked monolithic game client executable (GameNameClient.exe, but no server code)
|
|
/// </summary>
|
|
Client,
|
|
|
|
/// <summary>
|
|
/// Cooked monolithic game server executable (GameNameServer.exe, but no client code)
|
|
/// </summary>
|
|
Server,
|
|
|
|
/// <summary>
|
|
/// Program (standalone program, e.g. ShaderCompileWorker.exe, can be modular or monolithic depending on the program)
|
|
/// </summary>
|
|
Program,
|
|
}
|
|
|
|
/// <summary>
|
|
/// Specifies how to link all the modules in this target
|
|
/// </summary>
|
|
[Serializable]
|
|
public enum TargetLinkType
|
|
{
|
|
/// <summary>
|
|
/// Use the default link type based on the current target type
|
|
/// </summary>
|
|
Default,
|
|
|
|
/// <summary>
|
|
/// Link all modules into a single binary
|
|
/// </summary>
|
|
Monolithic,
|
|
|
|
/// <summary>
|
|
/// Link modules into individual dynamic libraries
|
|
/// </summary>
|
|
Modular,
|
|
}
|
|
|
|
/// <summary>
|
|
/// Specifies whether to share engine binaries and intermediates with other projects, or to create project-specific versions. By default,
|
|
/// editor builds always use the shared build environment (and engine binaries are written to Engine/Binaries/Platform), but monolithic builds
|
|
/// and programs do not (except in installed builds). Using the shared build environment prevents target-specific modifications to the build
|
|
/// environment.
|
|
/// </summary>
|
|
[Serializable]
|
|
public enum TargetBuildEnvironment
|
|
{
|
|
/// <summary>
|
|
/// Engine binaries and intermediates are output to the engine folder. Target-specific modifications to the engine build environment will be ignored.
|
|
/// </summary>
|
|
Shared,
|
|
|
|
/// <summary>
|
|
/// Engine binaries and intermediates are specific to this target
|
|
/// </summary>
|
|
Unique,
|
|
}
|
|
|
|
/// <summary>
|
|
/// Specifies how UnrealHeaderTool should enforce member pointer declarations in UCLASSes and USTRUCTs. This should match (by name, not value) the
|
|
/// EPointerMemberBehavior enum in BaseParser.h so that it can be interpreted correctly by UnrealHeaderTool.
|
|
/// </summary>
|
|
[Serializable]
|
|
public enum PointerMemberBehavior
|
|
{
|
|
/// <summary>
|
|
/// Pointer members of the associated type will be disallowed and result in an error emitted from UnrealHeaderTool.
|
|
/// </summary>
|
|
Disallow,
|
|
|
|
/// <summary>
|
|
/// Pointer members of the associated type will be allowed and not emit any messages to log or screen.
|
|
/// </summary>
|
|
AllowSilently,
|
|
|
|
/// <summary>
|
|
/// Pointer members of the associated type will be allowed but will emit messages to log.
|
|
/// </summary>
|
|
AllowAndLog,
|
|
}
|
|
|
|
/// <summary>
|
|
/// Determines which version of the engine to take default build settings from. This allows for backwards compatibility as new options are enabled by default.
|
|
/// </summary>
|
|
public enum BuildSettingsVersion
|
|
{
|
|
/// <summary>
|
|
/// Legacy default build settings for 4.23 and earlier.
|
|
/// </summary>
|
|
V1,
|
|
|
|
/// <summary>
|
|
/// New defaults for 4.24: ModuleRules.PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs, ModuleRules.bLegacyPublicIncludePaths = false.
|
|
/// </summary>
|
|
V2,
|
|
|
|
// *** When adding new entries here, be sure to update GameProjectUtils::GetDefaultBuildSettingsVersion() to ensure that new projects are created correctly. ***
|
|
|
|
/// <summary>
|
|
/// Always use the defaults for the current engine version. Note that this may cause compatibility issues when upgrading.
|
|
/// </summary>
|
|
Latest
|
|
}
|
|
|
|
/// <summary>
|
|
/// Attribute used to mark fields which much match between targets in the shared build environment
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
|
|
class RequiresUniqueBuildEnvironmentAttribute : Attribute
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Attribute used to mark configurable sub-objects
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
|
|
class ConfigSubObjectAttribute : Attribute
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// TargetRules is a data structure that contains the rules for defining a target (application/executable)
|
|
/// </summary>
|
|
public abstract partial class TargetRules
|
|
{
|
|
/// <summary>
|
|
/// Static class wrapping constants aliasing the global TargetType enum.
|
|
/// </summary>
|
|
public static class TargetType
|
|
{
|
|
/// <summary>
|
|
/// Alias for TargetType.Game
|
|
/// </summary>
|
|
public const global::UnrealBuildTool.TargetType Game = global::UnrealBuildTool.TargetType.Game;
|
|
|
|
/// <summary>
|
|
/// Alias for TargetType.Editor
|
|
/// </summary>
|
|
public const global::UnrealBuildTool.TargetType Editor = global::UnrealBuildTool.TargetType.Editor;
|
|
|
|
/// <summary>
|
|
/// Alias for TargetType.Client
|
|
/// </summary>
|
|
public const global::UnrealBuildTool.TargetType Client = global::UnrealBuildTool.TargetType.Client;
|
|
|
|
/// <summary>
|
|
/// Alias for TargetType.Server
|
|
/// </summary>
|
|
public const global::UnrealBuildTool.TargetType Server = global::UnrealBuildTool.TargetType.Server;
|
|
|
|
/// <summary>
|
|
/// Alias for TargetType.Program
|
|
/// </summary>
|
|
public const global::UnrealBuildTool.TargetType Program = global::UnrealBuildTool.TargetType.Program;
|
|
}
|
|
|
|
/// <summary>
|
|
/// The name of this target
|
|
/// </summary>
|
|
public string Name
|
|
{
|
|
get
|
|
{
|
|
if (!String.IsNullOrEmpty(NameOverride))
|
|
{
|
|
return NameOverride;
|
|
}
|
|
|
|
return DefaultName;
|
|
}
|
|
set
|
|
{
|
|
NameOverride = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// If the Name of this target has been overriden
|
|
/// </summary>
|
|
public bool IsNameOverriden() { return !String.IsNullOrEmpty(NameOverride); }
|
|
|
|
private string? NameOverride;
|
|
|
|
private readonly string DefaultName;
|
|
|
|
/// <summary>
|
|
/// File containing this target
|
|
/// </summary>
|
|
internal FileReference? File { get; set; }
|
|
|
|
/// <summary>
|
|
/// Platform that this target is being built for.
|
|
/// </summary>
|
|
public readonly UnrealTargetPlatform Platform;
|
|
|
|
/// <summary>
|
|
/// The configuration being built.
|
|
/// </summary>
|
|
public readonly UnrealTargetConfiguration Configuration;
|
|
|
|
/// <summary>
|
|
/// Architecture that the target is being built for (or an empty string for the default).
|
|
/// </summary>
|
|
public readonly string Architecture;
|
|
|
|
/// <summary>
|
|
/// Path to the project file for the project containing this target.
|
|
/// </summary>
|
|
public readonly FileReference? ProjectFile;
|
|
|
|
/// <summary>
|
|
/// The current build version
|
|
/// </summary>
|
|
public readonly ReadOnlyBuildVersion Version;
|
|
|
|
/// <summary>
|
|
/// The type of target.
|
|
/// </summary>
|
|
public global::UnrealBuildTool.TargetType Type = global::UnrealBuildTool.TargetType.Game;
|
|
|
|
/// <summary>
|
|
/// Specifies the engine version to maintain backwards-compatible default build settings with (eg. DefaultSettingsVersion.Release_4_23, DefaultSettingsVersion.Release_4_24). Specify DefaultSettingsVersion.Latest to always
|
|
/// use defaults for the current engine version, at the risk of introducing build errors while upgrading.
|
|
/// </summary>
|
|
public BuildSettingsVersion DefaultBuildSettings
|
|
{
|
|
get { return DefaultBuildSettingsPrivate ?? BuildSettingsVersion.V1; }
|
|
set { DefaultBuildSettingsPrivate = value; }
|
|
}
|
|
private BuildSettingsVersion? DefaultBuildSettingsPrivate; // Cannot be initialized inline; potentially overridden before the constructor is called.
|
|
|
|
/// <summary>
|
|
/// Tracks a list of config values read while constructing this target
|
|
/// </summary>
|
|
internal readonly ConfigValueTracker ConfigValueTracker;
|
|
|
|
/// <summary>
|
|
/// Whether the target uses Steam.
|
|
/// </summary>
|
|
public bool bUsesSteam;
|
|
|
|
/// <summary>
|
|
/// Whether the target uses CEF3.
|
|
/// </summary>
|
|
public bool bUsesCEF3;
|
|
|
|
/// <summary>
|
|
/// Whether the project uses visual Slate UI (as opposed to the low level windowing/messaging, which is always available).
|
|
/// </summary>
|
|
public bool bUsesSlate = true;
|
|
|
|
/// <summary>
|
|
/// Forces linking against the static CRT. This is not fully supported across the engine due to the need for allocator implementations to be shared (for example), and TPS
|
|
/// libraries to be consistent with each other, but can be used for utility programs.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bUseStaticCRT = false;
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bDebugBuildsActuallyUseDebugCRT = false;
|
|
|
|
/// <summary>
|
|
/// Whether the output from this target can be publicly distributed, even if it has dependencies on modules that are in folders
|
|
/// with special restrictions (eg. CarefullyRedist, NotForLicensees, NoRedist).
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bLegalToDistributeBinary = false;
|
|
|
|
/// <summary>
|
|
/// Obsolete. Use bLegalToDistributeBinary instead.
|
|
/// </summary>
|
|
[Obsolete("bOutputPubliclyDistributable has been deprecated in 4.24. Use bLegalToDistributeBinary instead.")]
|
|
public bool bOutputPubliclyDistributable
|
|
{
|
|
get { return bLegalToDistributeBinary; }
|
|
set { bLegalToDistributeBinary = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Specifies the configuration whose binaries do not require a "-Platform-Configuration" suffix.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public UnrealTargetConfiguration UndecoratedConfiguration = UnrealTargetConfiguration.Development;
|
|
|
|
/// <summary>
|
|
/// Whether this target supports hot reload
|
|
/// </summary>
|
|
public bool bAllowHotReload
|
|
{
|
|
get { return bAllowHotReloadOverride ?? (Type == TargetType.Editor && LinkType == TargetLinkType.Modular); }
|
|
set { bAllowHotReloadOverride = value; }
|
|
}
|
|
private bool? bAllowHotReloadOverride;
|
|
|
|
/// <summary>
|
|
/// Build all the plugins that we can find, even if they're not enabled. This is particularly useful for content-only projects,
|
|
/// where you're building the UnrealEditor target but running it with a game that enables a plugin.
|
|
/// </summary>
|
|
[Obsolete("bBuildAllPlugins has been deprecated. Use bPrecompile to build all modules which are not part of the target.")]
|
|
public bool bBuildAllPlugins = false;
|
|
|
|
/// <summary>
|
|
/// Build all the modules that are valid for this target type. Used for CIS and making installed engine builds.
|
|
/// </summary>
|
|
[CommandLine("-AllModules")]
|
|
public bool bBuildAllModules = false;
|
|
|
|
/// <summary>
|
|
/// Additional plugins that are built for this target type but not enabled.
|
|
/// </summary>
|
|
[CommandLine("-BuildPlugin=", ListSeparator = '+')]
|
|
public List<string> BuildPlugins = new List<string>();
|
|
|
|
/// <summary>
|
|
/// If this is true, then the BuildPlugins list will be used to populate RuntimeDependencies, rather than EnablePlugins
|
|
/// </summary>
|
|
public bool bRuntimeDependenciesComeFromBuildPlugins = false;
|
|
|
|
/// <summary>
|
|
/// A list of additional plugins which need to be included in this target. This allows referencing non-optional plugin modules
|
|
/// which cannot be disabled, and allows building against specific modules in program targets which do not fit the categories
|
|
/// in ModuleHostType.
|
|
/// </summary>
|
|
public List<string> AdditionalPlugins = new List<string>();
|
|
|
|
/// <summary>
|
|
/// Additional plugins that should be included for this target.
|
|
/// </summary>
|
|
[CommandLine("-EnablePlugin=", ListSeparator = '+')]
|
|
public List<string> EnablePlugins = new List<string>();
|
|
|
|
/// <summary>
|
|
/// List of plugins to be disabled for this target. Note that the project file may still reference them, so they should be marked
|
|
/// as optional to avoid failing to find them at runtime.
|
|
/// </summary>
|
|
[CommandLine("-DisablePlugin=", ListSeparator = '+')]
|
|
public List<string> DisablePlugins = new List<string>();
|
|
|
|
/// <summary>
|
|
/// Accessor for
|
|
/// </summary>
|
|
[Obsolete("The ExcludePlugins setting has been renamed to DisablePlugins. Please update your code to avoid build failures in future versions of the engine.")]
|
|
public List<string> ExcludePlugins
|
|
{
|
|
get { return DisablePlugins; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Path to the set of pak signing keys to embed in the executable.
|
|
/// </summary>
|
|
public string PakSigningKeysFile = "";
|
|
|
|
/// <summary>
|
|
/// Allows a Program Target to specify it's own solution folder path.
|
|
/// </summary>
|
|
public string SolutionDirectory = String.Empty;
|
|
|
|
/// <summary>
|
|
/// Whether the target should be included in the default solution build configuration
|
|
/// </summary>
|
|
public bool? bBuildInSolutionByDefault = null;
|
|
|
|
/// <summary>
|
|
/// Whether this target should be compiled as a DLL. Requires LinkType to be set to TargetLinkType.Monolithic.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[CommandLine("-CompileAsDll")]
|
|
public bool bShouldCompileAsDLL = false;
|
|
|
|
/// <summary>
|
|
/// Extra subdirectory to load config files out of, for making multiple types of builds with the same platform
|
|
/// This will get baked into the game executable as CUSTOM_CONFIG and used when staging to filter files and settings
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public string CustomConfig = String.Empty;
|
|
|
|
/// <summary>
|
|
/// Subfolder to place executables in, relative to the default location.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public string ExeBinariesSubFolder = String.Empty;
|
|
|
|
/// <summary>
|
|
/// Allow target module to override UHT code generation version.
|
|
/// </summary>
|
|
public EGeneratedCodeVersion GeneratedCodeVersion = EGeneratedCodeVersion.None;
|
|
|
|
/// <summary>
|
|
/// Whether to enable the mesh editor.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bEnableMeshEditor = false;
|
|
|
|
/// <summary>
|
|
/// Whether to use the verse script interface.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[CommandLine("-NoUseVerse", Value = "false")]
|
|
[CommandLine("-UseVerse", Value = "true")]
|
|
public bool bUseVerse = false;
|
|
|
|
/// <summary>
|
|
/// Whether to compile the Chaos physics plugin.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[CommandLine("-NoCompileChaos", Value = "false")]
|
|
[CommandLine("-CompileChaos", Value = "true")]
|
|
public bool bCompileChaos = true;
|
|
|
|
/// <summary>
|
|
/// Whether to use the Chaos physics interface. This overrides the physx flags to disable APEX and NvCloth
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[CommandLine("-NoUseChaos", Value = "false")]
|
|
[CommandLine("-UseChaos", Value = "true")]
|
|
public bool bUseChaos = true;
|
|
|
|
/// <summary>
|
|
/// Whether to compile in checked chaos features for debugging
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bUseChaosChecked = false;
|
|
|
|
/// <summary>
|
|
/// Whether to compile in chaos memory tracking features
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bUseChaosMemoryTracking = false;
|
|
|
|
/// <summary>
|
|
/// Whether scene query acceleration is done by UE4. The physx scene query structure is still created, but we do not use it.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCustomSceneQueryStructure = false;
|
|
|
|
/// <summary>
|
|
/// Whether to include PhysX support.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompilePhysX = false;
|
|
|
|
/// <summary>
|
|
/// Whether to include PhysX APEX support.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileApex")]
|
|
public bool bCompileAPEX = false;
|
|
|
|
/// <summary>
|
|
/// Whether to include NvCloth.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompileNvCloth = false;
|
|
|
|
/// <summary>
|
|
/// Whether to include ICU unicode/i18n support in Core.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileICU")]
|
|
public bool bCompileICU = true;
|
|
|
|
/// <summary>
|
|
/// Whether to compile CEF3 support.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileCEF3")]
|
|
public bool bCompileCEF3 = true;
|
|
|
|
/// <summary>
|
|
/// Whether to compile using ISPC.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompileISPC = false;
|
|
|
|
/// <summary>
|
|
/// Whether to compile in python support
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompilePython = true;
|
|
|
|
/// <summary>
|
|
/// Whether to compile the editor or not. Only desktop platforms (Windows or Mac) will use this, other platforms force this to false.
|
|
/// </summary>
|
|
public bool bBuildEditor
|
|
{
|
|
get { return (Type == TargetType.Editor); }
|
|
set { Log.TraceWarning("Setting {0}.bBuildEditor is deprecated. Set {0}.Type instead.", GetType().Name); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Whether to compile code related to building assets. Consoles generally cannot build assets. Desktop platforms generally can.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bBuildRequiresCookedData
|
|
{
|
|
get { return bBuildRequiresCookedDataOverride ?? (Type == TargetType.Game || Type == TargetType.Client || Type == TargetType.Server); }
|
|
set { bBuildRequiresCookedDataOverride = value; }
|
|
}
|
|
bool? bBuildRequiresCookedDataOverride;
|
|
|
|
/// <summary>
|
|
/// Whether to compile WITH_EDITORONLY_DATA disabled. Only Windows will use this, other platforms force this to false.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bBuildWithEditorOnlyData
|
|
{
|
|
get { return bBuildWithEditorOnlyDataOverride ?? (Type == TargetType.Editor || Type == TargetType.Program); }
|
|
set { bBuildWithEditorOnlyDataOverride = value; }
|
|
}
|
|
private bool? bBuildWithEditorOnlyDataOverride;
|
|
|
|
/// <summary>
|
|
/// Manually specified value for bBuildDeveloperTools.
|
|
/// </summary>
|
|
bool? bBuildDeveloperToolsOverride;
|
|
|
|
/// <summary>
|
|
/// Whether to compile the developer tools.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bBuildDeveloperTools
|
|
{
|
|
set { bBuildDeveloperToolsOverride = value; }
|
|
get { return bBuildDeveloperToolsOverride ?? (bCompileAgainstEngine && (Type == TargetType.Editor || Type == TargetType.Program || (Configuration != UnrealTargetConfiguration.Test && Configuration != UnrealTargetConfiguration.Shipping))); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Manually specified value for bBuildTargetDeveloperTools.
|
|
/// </summary>
|
|
bool? bBuildTargetDeveloperToolsOverride;
|
|
|
|
/// <summary>
|
|
/// Whether to compile the developer tools that are for target platforms or connected devices (defaults to bBuildDeveloperTools)
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bBuildTargetDeveloperTools
|
|
{
|
|
set { bBuildTargetDeveloperToolsOverride = value; }
|
|
get { return bBuildTargetDeveloperToolsOverride ?? bBuildDeveloperTools; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Whether to force compiling the target platform modules, even if they wouldn't normally be built.
|
|
/// </summary>
|
|
public bool bForceBuildTargetPlatforms = false;
|
|
|
|
/// <summary>
|
|
/// Whether to force compiling shader format modules, even if they wouldn't normally be built.
|
|
/// </summary>
|
|
public bool bForceBuildShaderFormats = false;
|
|
|
|
/// <summary>
|
|
/// Whether we should compile SQLite using the custom "Unreal" platform (true), or using the native platform (false).
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileCustomSQLitePlatform")]
|
|
public bool bCompileCustomSQLitePlatform = true;
|
|
|
|
/// <summary>
|
|
/// Whether to compile lean and mean version of UE.
|
|
/// </summary>
|
|
[Obsolete("bCompileLeanAndMeanUE is deprecated. Set bBuildDeveloperTools to the opposite value instead.")]
|
|
public bool bCompileLeanAndMeanUE
|
|
{
|
|
get { return !bBuildDeveloperTools; }
|
|
set { bBuildDeveloperTools = !value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Whether to utilize cache freed OS allocs with MallocBinned
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bUseCacheFreedOSAllocs")]
|
|
public bool bUseCacheFreedOSAllocs = true;
|
|
|
|
/// <summary>
|
|
/// Enabled for all builds that include the engine project. Disabled only when building standalone apps that only link with Core.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompileAgainstEngine = true;
|
|
|
|
/// <summary>
|
|
/// Enabled for all builds that include the CoreUObject project. Disabled only when building standalone apps that only link with Core.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompileAgainstCoreUObject = true;
|
|
|
|
/// <summary>
|
|
/// Enabled for builds that need to initialize the ApplicationCore module. Command line utilities do not normally need this.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompileAgainstApplicationCore = true;
|
|
|
|
/// <summary>
|
|
/// Whether to compile Recast navmesh generation.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileRecast")]
|
|
public bool bCompileRecast = true;
|
|
|
|
/// <summary>
|
|
/// Whether to compile with navmesh segment links.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompileNavmeshSegmentLinks = true;
|
|
|
|
/// <summary>
|
|
/// Whether to compile with navmesh cluster links.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompileNavmeshClusterLinks = true;
|
|
|
|
/// <summary>
|
|
/// Whether to compile SpeedTree support.
|
|
/// </summary>
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileSpeedTree")]
|
|
bool? bOverrideCompileSpeedTree;
|
|
|
|
/// <summary>
|
|
/// Whether we should compile in support for Simplygon or not.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompileSpeedTree
|
|
{
|
|
set { bOverrideCompileSpeedTree = value; }
|
|
get { return bOverrideCompileSpeedTree ?? Type == TargetType.Editor; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Enable exceptions for all modules.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bForceEnableExceptions = false;
|
|
|
|
/// <summary>
|
|
/// Enable inlining for all modules.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseInlining = true;
|
|
|
|
/// <summary>
|
|
/// Enable exceptions for all modules.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bForceEnableObjCExceptions = false;
|
|
|
|
/// <summary>
|
|
/// Enable RTTI for all modules.
|
|
/// </summary>
|
|
[CommandLine("-rtti")]
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bForceEnableRTTI = false;
|
|
|
|
/// <summary>
|
|
/// Compile server-only code.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bWithServerCode
|
|
{
|
|
get { return bWithServerCodeOverride ?? (Type != TargetType.Client); }
|
|
set { bWithServerCodeOverride = value; }
|
|
}
|
|
private bool? bWithServerCodeOverride;
|
|
|
|
/// <summary>
|
|
/// When enabled, Push Model Networking support will be compiled in.
|
|
/// This can help reduce CPU overhead of networking, at the cost of more memory.
|
|
/// Always enabled in editor builds.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bWithPushModel
|
|
{
|
|
get
|
|
{
|
|
return bWithPushModelOverride ?? (bBuildEditor);
|
|
}
|
|
set
|
|
{
|
|
bWithPushModelOverride = value;
|
|
}
|
|
}
|
|
private bool? bWithPushModelOverride;
|
|
|
|
/// <summary>
|
|
/// Whether to include stats support even without the engine.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompileWithStatsWithoutEngine = false;
|
|
|
|
/// <summary>
|
|
/// Whether to include plugin support.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileWithPluginSupport")]
|
|
public bool bCompileWithPluginSupport = false;
|
|
|
|
/// <summary>
|
|
/// Whether to allow plugins which support all target platforms.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bIncludePluginsForTargetPlatforms
|
|
{
|
|
get { return bIncludePluginsForTargetPlatformsOverride ?? (Type == TargetType.Editor); }
|
|
set { bIncludePluginsForTargetPlatformsOverride = value; }
|
|
}
|
|
private bool? bIncludePluginsForTargetPlatformsOverride;
|
|
|
|
/// <summary>
|
|
/// Whether to allow accessibility code in both Slate and the OS layer.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bCompileWithAccessibilitySupport = true;
|
|
|
|
/// <summary>
|
|
/// Whether to include PerfCounters support.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bWithPerfCounters
|
|
{
|
|
get { return bWithPerfCountersOverride ?? (Type == TargetType.Editor || Type == TargetType.Server); }
|
|
set { bWithPerfCountersOverride = value; }
|
|
}
|
|
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bWithPerfCounters")]
|
|
bool? bWithPerfCountersOverride;
|
|
|
|
/// <summary>
|
|
/// Whether to enable support for live coding
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bWithLiveCoding
|
|
{
|
|
get { return bWithLiveCodingPrivate ?? (Platform == UnrealTargetPlatform.Win64 && Configuration != UnrealTargetConfiguration.Shipping && Configuration != UnrealTargetConfiguration.Test && Type != TargetType.Program); }
|
|
set { bWithLiveCodingPrivate = value; }
|
|
}
|
|
bool? bWithLiveCodingPrivate;
|
|
|
|
/// <summary>
|
|
/// Whether to enable support for live coding
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseDebugLiveCodingConsole = false;
|
|
|
|
/// <summary>
|
|
/// Whether to enable support for DirectX Math
|
|
/// LWC_TODO: No longer supported. Needs removing.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bWithDirectXMath = false;
|
|
|
|
/// <summary>
|
|
/// Whether to turn on logging for test/shipping builds.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bUseLoggingInShipping = false;
|
|
|
|
/// <summary>
|
|
/// Whether to turn on logging to memory for test/shipping builds.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bLoggingToMemoryEnabled;
|
|
|
|
/// <summary>
|
|
/// Whether to check that the process was launched through an external launcher.
|
|
/// </summary>
|
|
public bool bUseLauncherChecks = false;
|
|
|
|
/// <summary>
|
|
/// Whether to turn on checks (asserts) for test/shipping builds.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bUseChecksInShipping = false;
|
|
|
|
/// <summary>
|
|
/// Whether to use the EstimatedUtcNow or PlatformUtcNow. EstimatedUtcNow is appropriate in
|
|
/// cases where PlatformUtcNow can be slow.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bUseEstimatedUtcNow = false;
|
|
|
|
/// <summary>
|
|
/// True if we need FreeType support.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileFreeType")]
|
|
public bool bCompileFreeType = true;
|
|
|
|
/// <summary>
|
|
/// True if we want to favor optimizing size over speed.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileForSize")]
|
|
public bool bCompileForSize = false;
|
|
|
|
/// <summary>
|
|
/// Whether to compile development automation tests.
|
|
/// </summary>
|
|
public bool bForceCompileDevelopmentAutomationTests = false;
|
|
|
|
/// <summary>
|
|
/// Whether to compile performance automation tests.
|
|
/// </summary>
|
|
public bool bForceCompilePerformanceAutomationTests = false;
|
|
|
|
/// <summary>
|
|
/// Whether to override the defaults for automation tests (Debug/Development configs)
|
|
/// </summary>
|
|
public bool bForceDisableAutomationTests = false;
|
|
|
|
/// <summary>
|
|
/// If true, event driven loader will be used in cooked builds. @todoio This needs to be replaced by a runtime solution after async loading refactor.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
public bool bEventDrivenLoader;
|
|
|
|
/// <summary>
|
|
/// Used to override the behavior controlling whether UCLASSes and USTRUCTs are allowed to have native pointer members, if disallowed they will be a UHT error and should be substituted with TObjectPtr members instead.
|
|
/// </summary>
|
|
public PointerMemberBehavior? NativePointerMemberBehaviorOverride = null;
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseXGEController = true;
|
|
|
|
/// <summary>
|
|
/// Whether to use backwards compatible defaults for this module. By default, engine modules always use the latest default settings, while project modules do not (to support
|
|
/// an easier migration path).
|
|
/// </summary>
|
|
[Obsolete("Set DefaultBuildSettings to the appropriate engine version (eg. BuildSettingsVersion.Release_4_23) or BuildSettingsVersion.Latest instead")]
|
|
public bool bUseBackwardsCompatibleDefaults
|
|
{
|
|
get { return DefaultBuildSettings != BuildSettingsVersion.Latest; }
|
|
set { DefaultBuildSettings = (value ? BuildSettingsVersion.V1 : BuildSettingsVersion.Latest); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Enables "include what you use" by default for modules in this target. Changes the default PCH mode for any module in this project to PCHUsageMode.UseExplicitOrSharedPCHs.
|
|
/// </summary>
|
|
[CommandLine("-IWYU")]
|
|
public bool bIWYU = false;
|
|
|
|
/// <summary>
|
|
/// Enforce "include what you use" rules; warns if monolithic headers (Engine.h, UnrealEd.h, etc...) are used, and checks that source files include their matching header first.
|
|
/// </summary>
|
|
public bool bEnforceIWYU = true;
|
|
|
|
/// <summary>
|
|
/// Whether the final executable should export symbols.
|
|
/// </summary>
|
|
public bool bHasExports
|
|
{
|
|
get { return bHasExportsOverride ?? (LinkType == TargetLinkType.Modular); }
|
|
set { bHasExportsOverride = value; }
|
|
}
|
|
private bool? bHasExportsOverride;
|
|
|
|
/// <summary>
|
|
/// Make static libraries for all engine modules as intermediates for this target.
|
|
/// </summary>
|
|
[CommandLine("-Precompile")]
|
|
public bool bPrecompile = false;
|
|
|
|
/// <summary>
|
|
/// Whether we should compile with support for OS X 10.9 Mavericks. Used for some tools that we need to be compatible with this version of OS X.
|
|
/// </summary>
|
|
public bool bEnableOSX109Support = false;
|
|
|
|
/// <summary>
|
|
/// True if this is a console application that's being built.
|
|
/// </summary>
|
|
public bool bIsBuildingConsoleApplication = false;
|
|
|
|
/// <summary>
|
|
/// If true, creates an additional console application. Hack for Windows, where it's not possible to conditionally inherit a parent's console Window depending on how
|
|
/// the application is invoked; you have to link the same executable with a different subsystem setting.
|
|
/// </summary>
|
|
public bool bBuildAdditionalConsoleApp
|
|
{
|
|
get { return bBuildAdditionalConsoleAppOverride ?? (Type == TargetType.Editor); }
|
|
set { bBuildAdditionalConsoleAppOverride = value; }
|
|
}
|
|
private bool? bBuildAdditionalConsoleAppOverride;
|
|
|
|
/// <summary>
|
|
/// True if debug symbols that are cached for some platforms should not be created.
|
|
/// </summary>
|
|
public bool bDisableSymbolCache = true;
|
|
|
|
/// <summary>
|
|
/// Whether to unify C++ code into larger files for faster compilation.
|
|
/// </summary>
|
|
public bool bUseUnityBuild
|
|
{
|
|
get { return bUseUnityBuildOverride ?? !bEnableCppModules; }
|
|
set { bUseUnityBuildOverride = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Whether to unify C++ code into larger files for faster compilation.
|
|
/// </summary>
|
|
[CommandLine("-DisableUnity", Value = "false")]
|
|
[XmlConfigFile(Category = "BuildConfiguration", Name = nameof(bUseUnityBuild))]
|
|
bool? bUseUnityBuildOverride = null;
|
|
|
|
/// <summary>
|
|
/// Whether to force C++ source files to be combined into larger files for faster compilation.
|
|
/// </summary>
|
|
[CommandLine("-ForceUnity")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bForceUnityBuild = false;
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[CommandLine("-DisableAdaptiveUnity", Value = "false")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseAdaptiveUnityBuild = true;
|
|
|
|
/// <summary>
|
|
/// Disable optimization for files that are in the adaptive non-unity working set.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bAdaptiveUnityDisablesOptimizations = false;
|
|
|
|
/// <summary>
|
|
/// Disables force-included PCHs for files that are in the adaptive non-unity working set.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bAdaptiveUnityDisablesPCH = false;
|
|
|
|
/// <summary>
|
|
/// Backing storage for bAdaptiveUnityDisablesProjectPCH.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
bool? bAdaptiveUnityDisablesProjectPCHForProjectPrivate;
|
|
|
|
/// <summary>
|
|
/// Whether to disable force-included PCHs for project source files in the adaptive non-unity working set. Defaults to bAdaptiveUnityDisablesPCH;
|
|
/// </summary>
|
|
public bool bAdaptiveUnityDisablesPCHForProject
|
|
{
|
|
get { return bAdaptiveUnityDisablesProjectPCHForProjectPrivate ?? bAdaptiveUnityDisablesPCH; }
|
|
set { bAdaptiveUnityDisablesProjectPCHForProjectPrivate = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates a dedicated PCH for each source file in the working set, allowing faster iteration on cpp-only changes.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bAdaptiveUnityCreatesDedicatedPCH = false;
|
|
|
|
/// <summary>
|
|
/// Creates a dedicated PCH for each source file in the working set, allowing faster iteration on cpp-only changes.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bAdaptiveUnityEnablesEditAndContinue = false;
|
|
|
|
/// <summary>
|
|
/// Creates a dedicated source file for each header file in the working set to detect missing includes in headers.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bAdaptiveUnityCompilesHeaderFiles = false;
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public int MinGameModuleSourceFilesForUnityBuild = 32;
|
|
|
|
/// <summary>
|
|
/// Default treatment of uncategorized warnings
|
|
/// </summary>
|
|
public WarningLevel DefaultWarningLevel
|
|
{
|
|
get => DefaultWarningLevelPrivate ?? (bWarningsAsErrors ? WarningLevel.Error : WarningLevel.Warning);
|
|
set => DefaultWarningLevelPrivate = value;
|
|
}
|
|
|
|
[XmlConfigFile(Category = "BuildConfiguration", Name = nameof(DefaultWarningLevel))]
|
|
private WarningLevel? DefaultWarningLevelPrivate;
|
|
|
|
/// <summary>
|
|
/// Level to report deprecation warnings as errors
|
|
/// </summary>
|
|
public WarningLevel DeprecationWarningLevel
|
|
{
|
|
get => DeprecationWarningLevelPrivate ?? DefaultWarningLevel;
|
|
set => DeprecationWarningLevelPrivate = value;
|
|
}
|
|
|
|
[XmlConfigFile(Category = "BuildConfiguration", Name = nameof(DeprecationWarningLevel))]
|
|
private WarningLevel? DeprecationWarningLevelPrivate;
|
|
|
|
/// <summary>
|
|
/// Forces shadow variable warnings to be treated as errors on platforms that support it.
|
|
/// </summary>
|
|
[CommandLine("-ShadowVariableErrors", Value = nameof(WarningLevel.Error))]
|
|
public WarningLevel ShadowVariableWarningLevel = WarningLevel.Warning;
|
|
|
|
/// <summary>
|
|
/// Forces shadow variable warnings to be treated as errors on platforms that support it.
|
|
/// </summary>
|
|
[Obsolete("bShadowVariableErrors is deprecated in UE 4.24. Set ShadowVariableWarningLevel = WarningLevel.Error instead.")]
|
|
public bool bShadowVariableErrors
|
|
{
|
|
get { return ShadowVariableWarningLevel == WarningLevel.Error; }
|
|
set { ShadowVariableWarningLevel = (value? WarningLevel.Error : WarningLevel.Warning); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Whether to enable all warnings as errors. UE enables most warnings as errors already, but disables a few (such as deprecation warnings).
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
[CommandLine("-WarningsAsErrors")]
|
|
public bool bWarningsAsErrors = false;
|
|
|
|
/// <summary>
|
|
/// Indicates what warning/error level to treat unsafe type casts as on platforms that support it (e.g., double->float or int64->int32)
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public WarningLevel UnsafeTypeCastWarningLevel = WarningLevel.Off;
|
|
|
|
/// <summary>
|
|
/// Forces the use of undefined identifiers in conditional expressions to be treated as errors.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUndefinedIdentifierErrors = true;
|
|
|
|
/// <summary>
|
|
/// Forces frame pointers to be retained this is usually required when you want reliable callstacks e.g. mallocframeprofiler
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bRetainFramePointers = true;
|
|
|
|
/// <summary>
|
|
/// New Monolithic Graphics drivers have optional "fast calls" replacing various D3d functions
|
|
/// </summary>
|
|
[CommandLine("-FastMonoCalls", Value = "true")]
|
|
[CommandLine("-NoFastMonoCalls", Value = "false")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseFastMonoCalls = true;
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseFastSemanticsRenderContexts = true;
|
|
|
|
/// <summary>
|
|
/// An approximate number of bytes of C++ code to target for inclusion in a single unified C++ file.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public int NumIncludedBytesPerUnityCPP = 384 * 1024;
|
|
|
|
/// <summary>
|
|
/// Whether to stress test the C++ unity build robustness by including all C++ files files in a project from a single unified file.
|
|
/// </summary>
|
|
[CommandLine("-StressTestUnity")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bStressTestUnity = false;
|
|
|
|
/// <summary>
|
|
/// Whether to force debug info to be generated.
|
|
/// </summary>
|
|
[CommandLine("-ForceDebugInfo")]
|
|
public bool bForceDebugInfo = false;
|
|
|
|
/// <summary>
|
|
/// Whether to globally disable debug info generation; see DebugInfoHeuristics.cs for per-config and per-platform options.
|
|
/// </summary>
|
|
[CommandLine("-NoDebugInfo")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bDisableDebugInfo = false;
|
|
|
|
/// <summary>
|
|
/// Whether to disable debug info generation for generated files. This improves link times for modules that have a lot of generated glue code.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bDisableDebugInfoForGeneratedCode = false;
|
|
|
|
/// <summary>
|
|
/// Whether to disable debug info on PC in development builds (for faster developer iteration, as link times are extremely fast with debug info disabled).
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bOmitPCDebugInfoInDevelopment = false;
|
|
|
|
/// <summary>
|
|
/// Whether PDB files should be used for Visual C++ builds.
|
|
/// </summary>
|
|
[CommandLine("-NoPDB", Value = "false")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUsePDBFiles = false;
|
|
|
|
/// <summary>
|
|
/// Whether PCH files should be used.
|
|
/// </summary>
|
|
[CommandLine("-NoPCH", Value = "false")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUsePCHFiles = true;
|
|
|
|
/// <summary>
|
|
/// Whether to just preprocess source files for this target, and skip compilation
|
|
/// </summary>
|
|
[CommandLine("-Preprocess")]
|
|
public bool bPreprocessOnly = false;
|
|
|
|
/// <summary>
|
|
/// The minimum number of files that must use a pre-compiled header before it will be created and used.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public int MinFilesUsingPrecompiledHeader = 6;
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bForcePrecompiledHeaderForGameModules = true;
|
|
|
|
/// <summary>
|
|
/// 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).
|
|
/// </summary>
|
|
[CommandLine("-IncrementalLinking")]
|
|
[CommandLine("-NoIncrementalLinking", Value = "false")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseIncrementalLinking = false;
|
|
|
|
/// <summary>
|
|
/// Whether to allow the use of link time code generation (LTCG).
|
|
/// </summary>
|
|
[CommandLine("-LTCG")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bAllowLTCG = false;
|
|
|
|
/// <summary>
|
|
/// Whether to enable Profile Guided Optimization (PGO) instrumentation in this build.
|
|
/// </summary>
|
|
[CommandLine("-PGOProfile", Value = "true")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bPGOProfile = false;
|
|
|
|
/// <summary>
|
|
/// Whether to optimize this build with Profile Guided Optimization (PGO).
|
|
/// </summary>
|
|
[CommandLine("-PGOOptimize", Value = "true")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bPGOOptimize = false;
|
|
|
|
/// <summary>
|
|
/// Whether to support edit and continue. Only works on Microsoft compilers.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bSupportEditAndContinue = false;
|
|
|
|
/// <summary>
|
|
/// Whether to omit frame pointers or not. Disabling is useful for e.g. memory profiling on the PC.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bOmitFramePointers = true;
|
|
|
|
/// <summary>
|
|
/// Whether to enable support for C++20 modules
|
|
/// </summary>
|
|
public bool bEnableCppModules = false;
|
|
|
|
/// <summary>
|
|
/// Whether to strip iOS symbols or not (implied by bGeneratedSYMFile).
|
|
/// </summary>
|
|
[Obsolete("bStripSymbolsOnIOS has been deprecated. Use IOSPlatform.bStripSymbols instead.")]
|
|
public bool bStripSymbolsOnIOS
|
|
{
|
|
get { return IOSPlatform.bStripSymbols; }
|
|
set { IOSPlatform.bStripSymbols = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// If true, then a stub IPA will be generated when compiling is done (minimal files needed for a valid IPA).
|
|
/// </summary>
|
|
[Obsolete("bCreateStubIPA has been deprecated. Use IOSPlatform.bCreateStubIPA instead.")]
|
|
public bool bCreateStubIPA
|
|
{
|
|
get { return IOSPlatform.bCreateStubIPA; }
|
|
set { IOSPlatform.bCreateStubIPA = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// If true, then enable memory profiling in the build (defines USE_MALLOC_PROFILER=1 and forces bOmitFramePointers=false).
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseMallocProfiler = false;
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[CommandLine("-NoSharedPCH", Value = "false")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseSharedPCHs = true;
|
|
|
|
/// <summary>
|
|
/// True if Development and Release builds should use the release configuration of PhysX/APEX.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseShippingPhysXLibraries = false;
|
|
|
|
/// <summary>
|
|
/// True if Development and Release builds should use the checked configuration of PhysX/APEX. if bUseShippingPhysXLibraries is true this is ignored.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bUseCheckedPhysXLibraries = false;
|
|
|
|
/// <summary>
|
|
/// Tells the UBT to check if module currently being built is violating EULA.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bCheckLicenseViolations = true;
|
|
|
|
/// <summary>
|
|
/// Tells the UBT to break build if module currently being built is violating EULA.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bBreakBuildOnLicenseViolation = true;
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[CommandLine("-FastPDB")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool? bUseFastPDBLinking;
|
|
|
|
/// <summary>
|
|
/// Outputs a map file as part of the build.
|
|
/// </summary>
|
|
[CommandLine("-MapFile")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bCreateMapFile = false;
|
|
|
|
/// <summary>
|
|
/// True if runtime symbols files should be generated as a post build step for some platforms.
|
|
/// These files are used by the engine to resolve symbol names of callstack backtraces in logs.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bAllowRuntimeSymbolFiles = true;
|
|
|
|
/// <summary>
|
|
/// Bundle version for Mac apps.
|
|
/// </summary>
|
|
[CommandLine("-BundleVersion")]
|
|
public string? BundleVersion = null;
|
|
|
|
/// <summary>
|
|
/// Whether to deploy the executable after compilation on platforms that require deployment.
|
|
/// </summary>
|
|
[CommandLine("-Deploy")]
|
|
public bool bDeployAfterCompile = false;
|
|
|
|
/// <summary>
|
|
/// Whether to force skipping deployment for platforms that require deployment by default.
|
|
/// </summary>
|
|
[CommandLine("-SkipDeploy")]
|
|
private bool bForceSkipDeploy = false;
|
|
|
|
/// <summary>
|
|
/// When enabled, allows XGE to compile pre-compiled header files on remote machines. Otherwise, PCHs are always generated locally.
|
|
/// </summary>
|
|
public bool bAllowRemotelyCompiledPCHs = false;
|
|
|
|
/// <summary>
|
|
/// Whether headers in system paths should be checked for modification when determining outdated actions.
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bCheckSystemHeadersForModification;
|
|
|
|
/// <summary>
|
|
/// Whether to disable linking for this target.
|
|
/// </summary>
|
|
[CommandLine("-NoLink")]
|
|
public bool bDisableLinking = false;
|
|
|
|
/// <summary>
|
|
/// Indicates that this is a formal build, intended for distribution. This flag is automatically set to true when Build.version has a changelist set.
|
|
/// The only behavior currently bound to this flag is to compile the default resource file separately for each binary so that the OriginalFilename field is set correctly.
|
|
/// By default, we only compile the resource once to reduce build times.
|
|
/// </summary>
|
|
[CommandLine("-Formal")]
|
|
public bool bFormalBuild = false;
|
|
|
|
/// <summary>
|
|
/// Whether to clean Builds directory on a remote Mac before building.
|
|
/// </summary>
|
|
[CommandLine("-FlushMac")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bFlushBuildDirOnRemoteMac = false;
|
|
|
|
/// <summary>
|
|
/// Whether to write detailed timing info from the compiler and linker.
|
|
/// </summary>
|
|
[CommandLine("-Timing")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bPrintToolChainTimingInfo = false;
|
|
|
|
/// <summary>
|
|
/// Whether to parse timing data into a tracing file compatible with chrome://tracing.
|
|
/// </summary>
|
|
[CommandLine("-Tracing")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bParseTimingInfoForTracing = false;
|
|
|
|
/// <summary>
|
|
/// Whether to expose all symbols as public by default on POSIX platforms
|
|
/// </summary>
|
|
[CommandLine("-PublicSymbolsByDefault")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public bool bPublicSymbolsByDefault = false;
|
|
|
|
/// <summary>
|
|
/// Allows overriding the toolchain to be created for this target. This must match the name of a class declared in the UnrealBuildTool assembly.
|
|
/// </summary>
|
|
[CommandLine("-ToolChain")]
|
|
public string? ToolChainName = null;
|
|
|
|
/// <summary>
|
|
/// Whether to allow engine configuration to determine if we can load unverified certificates.
|
|
/// </summary>
|
|
public bool bDisableUnverifiedCertificates = false;
|
|
|
|
/// <summary>
|
|
/// Whether to load generated ini files in cooked build, (GameUserSettings.ini loaded either way)
|
|
/// </summary>
|
|
public bool bAllowGeneratedIniWhenCooked = true;
|
|
|
|
/// <summary>
|
|
/// Whether to load non-ufs ini files in cooked build, (GameUserSettings.ini loaded either way)
|
|
/// </summary>
|
|
public bool bAllowNonUFSIniWhenCooked = true;
|
|
|
|
/// <summary>
|
|
/// Add all the public folders as include paths for the compile environment.
|
|
/// </summary>
|
|
public bool bLegacyPublicIncludePaths
|
|
{
|
|
get { return bLegacyPublicIncludePathsPrivate ?? (DefaultBuildSettings < BuildSettingsVersion.V2); }
|
|
set { bLegacyPublicIncludePathsPrivate = value; }
|
|
}
|
|
private bool? bLegacyPublicIncludePathsPrivate;
|
|
|
|
/// <summary>
|
|
/// Which C++ stanard to use for compiling this target
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[CommandLine("-CppStd")]
|
|
[XmlConfigFile(Category = "BuildConfiguration")]
|
|
public CppStandardVersion CppStandard = CppStandardVersion.Default;
|
|
|
|
/// <summary>
|
|
/// Do not allow manifest changes when building this target. Used to cause earlier errors when building multiple targets with a shared build environment.
|
|
/// </summary>
|
|
[CommandLine("-NoManifestChanges")]
|
|
internal bool bNoManifestChanges = false;
|
|
|
|
/// <summary>
|
|
/// The build version string
|
|
/// </summary>
|
|
[CommandLine("-BuildVersion")]
|
|
public string? BuildVersion;
|
|
|
|
/// <summary>
|
|
/// Specifies how to link modules in this target (monolithic or modular). This is currently protected for backwards compatibility. Call the GetLinkType() accessor
|
|
/// until support for the deprecated ShouldCompileMonolithic() override has been removed.
|
|
/// </summary>
|
|
public TargetLinkType LinkType
|
|
{
|
|
get
|
|
{
|
|
return (LinkTypePrivate != TargetLinkType.Default) ? LinkTypePrivate : ((Type == global::UnrealBuildTool.TargetType.Editor) ? TargetLinkType.Modular : TargetLinkType.Monolithic);
|
|
}
|
|
set
|
|
{
|
|
LinkTypePrivate = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Backing storage for the LinkType property.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[CommandLine("-Monolithic", Value ="Monolithic")]
|
|
[CommandLine("-Modular", Value ="Modular")]
|
|
TargetLinkType LinkTypePrivate = TargetLinkType.Default;
|
|
|
|
/// <summary>
|
|
/// Macros to define globally across the whole target.
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[CommandLine("-Define:")]
|
|
public List<string> GlobalDefinitions = new List<string>();
|
|
|
|
/// <summary>
|
|
/// Macros to define across all macros in the project.
|
|
/// </summary>
|
|
[CommandLine("-ProjectDefine:")]
|
|
public List<string> ProjectDefinitions = new List<string>();
|
|
|
|
/// <summary>
|
|
/// Specifies the name of the launch module. For modular builds, this is the module that is compiled into the target's executable.
|
|
/// </summary>
|
|
public string? LaunchModuleName
|
|
{
|
|
get
|
|
{
|
|
return (LaunchModuleNamePrivate == null && Type != global::UnrealBuildTool.TargetType.Program)? "Launch" : LaunchModuleNamePrivate;
|
|
}
|
|
set
|
|
{
|
|
LaunchModuleNamePrivate = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Backing storage for the LaunchModuleName property.
|
|
/// </summary>
|
|
private string? LaunchModuleNamePrivate;
|
|
|
|
/// <summary>
|
|
/// Specifies the path to write a header containing public definitions for this target. Useful when building a DLL to be consumed by external build processes.
|
|
/// </summary>
|
|
public string? ExportPublicHeader;
|
|
|
|
/// <summary>
|
|
/// List of additional modules to be compiled into the target.
|
|
/// </summary>
|
|
public List<string> ExtraModuleNames = new List<string>();
|
|
|
|
/// <summary>
|
|
/// Path to a manifest to output for this target
|
|
/// </summary>
|
|
[CommandLine("-Manifest")]
|
|
public List<FileReference> ManifestFileNames = new List<FileReference>();
|
|
|
|
/// <summary>
|
|
/// Path to a list of dependencies for this target, when precompiling
|
|
/// </summary>
|
|
[CommandLine("-DependencyList")]
|
|
public List<FileReference> DependencyListFileNames = new List<FileReference>();
|
|
|
|
/// <summary>
|
|
/// Backing storage for the BuildEnvironment property
|
|
/// </summary>
|
|
[CommandLine("-SharedBuildEnvironment", Value = "Shared")]
|
|
[CommandLine("-UniqueBuildEnvironment", Value = "Unique")]
|
|
private TargetBuildEnvironment? BuildEnvironmentOverride;
|
|
|
|
/// <summary>
|
|
/// Specifies the build environment for this target. See TargetBuildEnvironment for more information on the available options.
|
|
/// </summary>
|
|
public TargetBuildEnvironment BuildEnvironment
|
|
{
|
|
get
|
|
{
|
|
if(BuildEnvironmentOverride.HasValue)
|
|
{
|
|
return BuildEnvironmentOverride.Value;
|
|
}
|
|
if (Type == TargetType.Program && ProjectFile != null && File!.IsUnderDirectory(ProjectFile.Directory))
|
|
{
|
|
return TargetBuildEnvironment.Unique;
|
|
}
|
|
else if (Unreal.IsEngineInstalled() || LinkType != TargetLinkType.Monolithic)
|
|
{
|
|
return TargetBuildEnvironment.Shared;
|
|
}
|
|
else
|
|
{
|
|
return TargetBuildEnvironment.Unique;
|
|
}
|
|
}
|
|
set
|
|
{
|
|
BuildEnvironmentOverride = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Whether to ignore violations to the shared build environment (eg. editor targets modifying definitions)
|
|
/// </summary>
|
|
[CommandLine("-OverrideBuildEnvironment")]
|
|
public bool bOverrideBuildEnvironment = false;
|
|
|
|
/// <summary>
|
|
/// Specifies a list of targets which should be built before this target is built.
|
|
/// </summary>
|
|
public List<TargetInfo> PreBuildTargets = new List<TargetInfo>();
|
|
|
|
/// <summary>
|
|
/// Specifies a list of steps which should be executed before this target is built, in the context of the host platform's shell.
|
|
/// The following variables will be expanded before execution:
|
|
/// $(EngineDir), $(ProjectDir), $(TargetName), $(TargetPlatform), $(TargetConfiguration), $(TargetType), $(ProjectFile).
|
|
/// </summary>
|
|
public List<string> PreBuildSteps = new List<string>();
|
|
|
|
/// <summary>
|
|
/// Specifies a list of steps which should be executed after this target is built, in the context of the host platform's shell.
|
|
/// The following variables will be expanded before execution:
|
|
/// $(EngineDir), $(ProjectDir), $(TargetName), $(TargetPlatform), $(TargetConfiguration), $(TargetType), $(ProjectFile).
|
|
/// </summary>
|
|
public List<string> PostBuildSteps = new List<string>();
|
|
|
|
/// <summary>
|
|
/// Specifies additional build products produced as part of this target.
|
|
/// </summary>
|
|
public List<string> AdditionalBuildProducts = new List<string>();
|
|
|
|
/// <summary>
|
|
/// Additional arguments to pass to the compiler
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[CommandLine("-CompilerArguments=")]
|
|
public string? AdditionalCompilerArguments;
|
|
|
|
/// <summary>
|
|
/// Additional arguments to pass to the linker
|
|
/// </summary>
|
|
[RequiresUniqueBuildEnvironment]
|
|
[CommandLine("-LinkerArguments=")]
|
|
public string? AdditionalLinkerArguments;
|
|
|
|
|
|
/// <summary>
|
|
/// List of modules to disable unity builds for
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "ModuleConfiguration", Name = "DisableUnityBuild")]
|
|
public string[]? DisableUnityBuildForModules = null;
|
|
|
|
/// <summary>
|
|
/// List of modules to enable optimizations for
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "ModuleConfiguration", Name = "EnableOptimizeCode")]
|
|
public string[]? EnableOptimizeCodeForModules = null;
|
|
|
|
/// <summary>
|
|
/// List of modules to disable optimizations for
|
|
/// </summary>
|
|
[XmlConfigFile(Category = "ModuleConfiguration", Name = "DisableOptimizeCode")]
|
|
public string[]? DisableOptimizeCodeForModules = null;
|
|
|
|
/// <summary>
|
|
/// When generating project files, specifies the name of the project file to use when there are multiple targets of the same type.
|
|
/// </summary>
|
|
public string? GeneratedProjectName;
|
|
|
|
/// <summary>
|
|
/// If this is non-null, then any platforms NOT listed will not be allowed to have modules in their directories be created
|
|
/// </summary>
|
|
public UnrealTargetPlatform[]? OptedInModulePlatforms = null;
|
|
|
|
/// <summary>
|
|
/// Android-specific target settings.
|
|
/// </summary>
|
|
[ConfigSubObject]
|
|
public AndroidTargetRules AndroidPlatform = new AndroidTargetRules();
|
|
|
|
/// <summary>
|
|
/// IOS-specific target settings.
|
|
/// </summary>
|
|
[ConfigSubObject]
|
|
public IOSTargetRules IOSPlatform = new IOSTargetRules();
|
|
|
|
/// <summary>
|
|
/// Linux-specific target settings.
|
|
/// </summary>
|
|
[ConfigSubObject]
|
|
public LinuxTargetRules LinuxPlatform = new LinuxTargetRules();
|
|
|
|
/// <summary>
|
|
/// Mac-specific target settings.
|
|
/// </summary>
|
|
[ConfigSubObject]
|
|
public MacTargetRules MacPlatform = new MacTargetRules();
|
|
|
|
/// <summary>
|
|
/// PS4-specific target settings.
|
|
/// </summary>
|
|
[ConfigSubObject]
|
|
public PS4TargetRules PS4Platform = new PS4TargetRules();
|
|
|
|
/// <summary>
|
|
/// Switch-specific target settings.
|
|
/// </summary>
|
|
[ConfigSubObject]
|
|
public SwitchTargetRules SwitchPlatform = new SwitchTargetRules();
|
|
|
|
/// <summary>
|
|
/// Windows-specific target settings.
|
|
/// </summary>
|
|
[ConfigSubObject]
|
|
public WindowsTargetRules WindowsPlatform; // Requires 'this' parameter; initialized in constructor
|
|
|
|
/// <summary>
|
|
/// Xbox One-specific target settings.
|
|
/// </summary>
|
|
[ConfigSubObject]
|
|
public XboxOneTargetRules XboxOnePlatform = new XboxOneTargetRules();
|
|
|
|
/// <summary>
|
|
/// HoloLens-specific target settings.
|
|
/// </summary>
|
|
[ConfigSubObject]
|
|
public HoloLensTargetRules HoloLensPlatform;
|
|
|
|
/// <summary>
|
|
/// Constructor.
|
|
/// </summary>
|
|
/// <param name="Target">Information about the target being built</param>
|
|
public TargetRules(TargetInfo Target)
|
|
{
|
|
this.DefaultName = Target.Name;
|
|
this.Platform = Target.Platform;
|
|
this.Configuration = Target.Configuration;
|
|
this.Architecture = Target.Architecture;
|
|
this.ProjectFile = Target.ProjectFile;
|
|
this.Version = Target.Version;
|
|
this.WindowsPlatform = new WindowsTargetRules(this);
|
|
this.HoloLensPlatform = new HoloLensTargetRules(Target);
|
|
|
|
// Read settings from config files
|
|
Dictionary<ConfigDependencyKey, IReadOnlyList<string>?> ConfigValues = new Dictionary<ConfigDependencyKey, IReadOnlyList<string>?>();
|
|
foreach (object ConfigurableObject in GetConfigurableObjects())
|
|
{
|
|
ConfigCache.ReadSettings(DirectoryReference.FromFile(ProjectFile), Platform, ConfigurableObject, ConfigValues);
|
|
XmlConfig.ApplyTo(ConfigurableObject);
|
|
if (Target.Arguments != null)
|
|
{
|
|
Target.Arguments.ApplyTo(ConfigurableObject);
|
|
}
|
|
}
|
|
ConfigValueTracker = new ConfigValueTracker(ConfigValues);
|
|
|
|
// If we've got a changelist set, set that we're making a formal build
|
|
bFormalBuild = (Version.Changelist != 0 && Version.IsPromotedBuild);
|
|
|
|
// Allow the build platform to set defaults for this target
|
|
UEBuildPlatform.GetBuildPlatform(Platform).ResetTarget(this);
|
|
bDeployAfterCompile = bForceSkipDeploy ? false : bDeployAfterCompile;
|
|
|
|
// Set the default build version
|
|
if(String.IsNullOrEmpty(BuildVersion))
|
|
{
|
|
if(String.IsNullOrEmpty(Target.Version.BuildVersionString))
|
|
{
|
|
BuildVersion = String.Format("{0}-CL-{1}", Target.Version.BranchName, Target.Version.Changelist);
|
|
}
|
|
else
|
|
{
|
|
BuildVersion = Target.Version.BuildVersionString;
|
|
}
|
|
}
|
|
|
|
// Get the directory to use for crypto settings. We can build engine targets (eg. UHT) with
|
|
// a project file, but we can't use that to determine crypto settings without triggering
|
|
// constant rebuilds of UHT.
|
|
DirectoryReference? CryptoSettingsDir = DirectoryReference.FromFile(ProjectFile);
|
|
if (CryptoSettingsDir != null && File != null && !File.IsUnderDirectory(CryptoSettingsDir))
|
|
{
|
|
CryptoSettingsDir = null;
|
|
}
|
|
|
|
// Setup macros for signing and encryption keys
|
|
EncryptionAndSigning.CryptoSettings CryptoSettings = EncryptionAndSigning.ParseCryptoSettings(CryptoSettingsDir, Platform);
|
|
if (CryptoSettings.IsAnyEncryptionEnabled())
|
|
{
|
|
ProjectDefinitions.Add(String.Format("IMPLEMENT_ENCRYPTION_KEY_REGISTRATION()=UE_REGISTER_ENCRYPTION_KEY({0})", FormatHexBytes(CryptoSettings.EncryptionKey.Key)));
|
|
}
|
|
else
|
|
{
|
|
ProjectDefinitions.Add("IMPLEMENT_ENCRYPTION_KEY_REGISTRATION()=");
|
|
}
|
|
|
|
if (CryptoSettings.IsPakSigningEnabled())
|
|
{
|
|
ProjectDefinitions.Add(String.Format("IMPLEMENT_SIGNING_KEY_REGISTRATION()=UE_REGISTER_SIGNING_KEY(UE_LIST_ARGUMENT({0}), UE_LIST_ARGUMENT({1}))", FormatHexBytes(CryptoSettings.SigningKey.PublicKey.Exponent), FormatHexBytes(CryptoSettings.SigningKey.PublicKey.Modulus)));
|
|
}
|
|
else
|
|
{
|
|
ProjectDefinitions.Add("IMPLEMENT_SIGNING_KEY_REGISTRATION()=");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Formats an array of bytes as a sequence of values
|
|
/// </summary>
|
|
/// <param name="Data">The data to convert into a string</param>
|
|
/// <returns>List of hexadecimal bytes</returns>
|
|
private static string FormatHexBytes(byte[] Data)
|
|
{
|
|
return String.Join(",", Data.Select(x => String.Format("0x{0:X2}", x)));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Override any settings required for the selected target type
|
|
/// </summary>
|
|
internal void SetOverridesForTargetType()
|
|
{
|
|
if(Type == global::UnrealBuildTool.TargetType.Game)
|
|
{
|
|
GlobalDefinitions.Add("UE_GAME=1");
|
|
}
|
|
else if(Type == global::UnrealBuildTool.TargetType.Client)
|
|
{
|
|
GlobalDefinitions.Add("UE_GAME=1");
|
|
GlobalDefinitions.Add("UE_CLIENT=1");
|
|
}
|
|
else if(Type == global::UnrealBuildTool.TargetType.Editor)
|
|
{
|
|
GlobalDefinitions.Add("UE_EDITOR=1");
|
|
}
|
|
else if(Type == global::UnrealBuildTool.TargetType.Server)
|
|
{
|
|
GlobalDefinitions.Add("UE_SERVER=1");
|
|
GlobalDefinitions.Add("USE_NULL_RHI=1");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets a list of platforms that this target supports
|
|
/// </summary>
|
|
/// <returns>Array of platforms that the target supports</returns>
|
|
internal UnrealTargetPlatform[] GetSupportedPlatforms()
|
|
{
|
|
// Otherwise take the SupportedPlatformsAttribute from the first type in the inheritance chain that supports it
|
|
for (Type? CurrentType = GetType(); CurrentType != null; CurrentType = CurrentType.BaseType)
|
|
{
|
|
object[] Attributes = CurrentType.GetCustomAttributes(typeof(SupportedPlatformsAttribute), false);
|
|
if (Attributes.Length > 0)
|
|
{
|
|
return Attributes.OfType<SupportedPlatformsAttribute>().SelectMany(x => x.Platforms).Distinct().ToArray();
|
|
}
|
|
}
|
|
|
|
// Otherwise, get the default for the target type
|
|
if (Type == TargetType.Program)
|
|
{
|
|
return Utils.GetPlatformsInClass(UnrealPlatformClass.Desktop);
|
|
}
|
|
else if (Type == TargetType.Editor)
|
|
{
|
|
return Utils.GetPlatformsInClass(UnrealPlatformClass.Editor);
|
|
}
|
|
else
|
|
{
|
|
return Utils.GetPlatformsInClass(UnrealPlatformClass.All);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets a list of configurations that this target supports
|
|
/// </summary>
|
|
/// <returns>Array of configurations that the target supports</returns>
|
|
internal UnrealTargetConfiguration[] GetSupportedConfigurations()
|
|
{
|
|
// Otherwise take the SupportedConfigurationsAttribute from the first type in the inheritance chain that supports it
|
|
for (Type? CurrentType = GetType(); CurrentType != null; CurrentType = CurrentType.BaseType)
|
|
{
|
|
object[] Attributes = CurrentType.GetCustomAttributes(typeof(SupportedConfigurationsAttribute), false);
|
|
if (Attributes.Length > 0)
|
|
{
|
|
return Attributes.OfType<SupportedConfigurationsAttribute>().SelectMany(x => x.Configurations).Distinct().ToArray();
|
|
}
|
|
}
|
|
|
|
// Otherwise, get the default for the target type
|
|
if (Type == TargetType.Editor)
|
|
{
|
|
return new[] { UnrealTargetConfiguration.Debug, UnrealTargetConfiguration.DebugGame, UnrealTargetConfiguration.Development };
|
|
}
|
|
else
|
|
{
|
|
return ((UnrealTargetConfiguration[])Enum.GetValues(typeof(UnrealTargetConfiguration))).Where(x => x != UnrealTargetConfiguration.Unknown).ToArray();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Finds all the subobjects which can be configured by command line options and config files
|
|
/// </summary>
|
|
/// <returns>Sequence of objects</returns>
|
|
internal IEnumerable<object> GetConfigurableObjects()
|
|
{
|
|
yield return this;
|
|
|
|
foreach(FieldInfo Field in GetType().GetFields(BindingFlags.Public | BindingFlags.Instance))
|
|
{
|
|
if(Field.GetCustomAttribute<ConfigSubObjectAttribute>() != null)
|
|
{
|
|
object? Value = Field.GetValue(this);
|
|
if(Value != null)
|
|
{
|
|
yield return Value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the host platform being built on
|
|
/// </summary>
|
|
public UnrealTargetPlatform HostPlatform
|
|
{
|
|
get { return BuildHostPlatform.Current.Platform; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Expose the bGenerateProjectFiles flag to targets, so we can modify behavior as appropriate for better intellisense
|
|
/// </summary>
|
|
public bool bGenerateProjectFiles
|
|
{
|
|
get { return ProjectFileGenerator.bGenerateProjectFiles; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Indicates whether target rules should be used to explicitly enable or disable plugins. Usually not needed for project generation unless project files indicate whether referenced plugins should be built or not.
|
|
/// </summary>
|
|
public bool bShouldTargetRulesTogglePlugins
|
|
{
|
|
get
|
|
{
|
|
return ((ProjectFileGenerator.Current != null) && ProjectFileGenerator.Current.ShouldTargetRulesTogglePlugins())
|
|
|| ((ProjectFileGenerator.Current == null) && !ProjectFileGenerator.bGenerateProjectFiles);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Expose a setting for whether or not the engine is installed
|
|
/// </summary>
|
|
/// <returns>Flag for whether the engine is installed</returns>
|
|
public bool bIsEngineInstalled
|
|
{
|
|
get { return Unreal.IsEngineInstalled(); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets diagnostic messages about default settings which have changed in newer versions of the engine
|
|
/// </summary>
|
|
/// <param name="Diagnostics">List of diagnostic messages</param>
|
|
internal void GetBuildSettingsInfo(List<string> Diagnostics)
|
|
{
|
|
if(DefaultBuildSettings < BuildSettingsVersion.V2)
|
|
{
|
|
Diagnostics.Add("[Upgrade]");
|
|
Diagnostics.Add("[Upgrade] Using backward-compatible build settings. The latest version of UE sets the following values by default, which may require code changes:");
|
|
|
|
List<Tuple<string, string>> ModifiedSettings = new List<Tuple<string, string>>();
|
|
if(DefaultBuildSettings < BuildSettingsVersion.V2)
|
|
{
|
|
ModifiedSettings.Add(Tuple.Create(String.Format("{0} = false", nameof(bLegacyPublicIncludePaths)), "Omits subfolders from public include paths to reduce compiler command line length. (Previously: true)."));
|
|
ModifiedSettings.Add(Tuple.Create(String.Format("{0} = WarningLevel.Error", nameof(ShadowVariableWarningLevel)), "Treats shadowed variable warnings as errors. (Previously: WarningLevel.Warning)."));
|
|
ModifiedSettings.Add(Tuple.Create(String.Format("{0} = PCHUsageMode.UseExplicitOrSharedPCHs", nameof(ModuleRules.PCHUsage)), "Set in build.cs files to enables IWYU-style PCH model. See https://docs.unrealengine.com/en-US/Programming/BuildTools/UnrealBuildTool/IWYU/index.html. (Previously: PCHUsageMode.UseSharedPCHs)."));
|
|
}
|
|
|
|
if (ModifiedSettings.Count > 0)
|
|
{
|
|
string FormatString = String.Format("[Upgrade] {{0,-{0}}} => {{1}}", ModifiedSettings.Max(x => x.Item1.Length));
|
|
foreach (Tuple<string, string> ModifiedSetting in ModifiedSettings)
|
|
{
|
|
Diagnostics.Add(String.Format(FormatString, ModifiedSetting.Item1, ModifiedSetting.Item2));
|
|
}
|
|
}
|
|
Diagnostics.Add(String.Format("[Upgrade] Suppress this message by setting 'DefaultBuildSettings = BuildSettingsVersion.{1};' in {2}, and explicitly overriding settings that differ from the new defaults.", Version, (BuildSettingsVersion)(BuildSettingsVersion.Latest - 1), File!.GetFileName()));
|
|
Diagnostics.Add("[Upgrade]");
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Read-only wrapper around an existing TargetRules instance. This exposes target settings to modules without letting them to modify the global environment.
|
|
/// </summary>
|
|
public partial class ReadOnlyTargetRules
|
|
{
|
|
/// <summary>
|
|
/// The writeable TargetRules instance
|
|
/// </summary>
|
|
TargetRules Inner;
|
|
|
|
/// <summary>
|
|
/// Constructor
|
|
/// </summary>
|
|
/// <param name="Inner">The TargetRules instance to wrap around</param>
|
|
public ReadOnlyTargetRules(TargetRules Inner)
|
|
{
|
|
this.Inner = Inner;
|
|
AndroidPlatform = new ReadOnlyAndroidTargetRules(Inner.AndroidPlatform);
|
|
IOSPlatform = new ReadOnlyIOSTargetRules(Inner.IOSPlatform);
|
|
LinuxPlatform = new ReadOnlyLinuxTargetRules(Inner.LinuxPlatform);
|
|
MacPlatform = new ReadOnlyMacTargetRules(Inner.MacPlatform);
|
|
PS4Platform = new ReadOnlyPS4TargetRules(Inner.PS4Platform);
|
|
SwitchPlatform = new ReadOnlySwitchTargetRules(Inner.SwitchPlatform);
|
|
WindowsPlatform = new ReadOnlyWindowsTargetRules(Inner.WindowsPlatform);
|
|
XboxOnePlatform = new ReadOnlyXboxOneTargetRules(Inner.XboxOnePlatform);
|
|
HoloLensPlatform = new ReadOnlyHoloLensTargetRules(Inner.HoloLensPlatform);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Accessors for fields on the inner TargetRules instance
|
|
/// </summary>
|
|
#region Read-only accessor properties
|
|
#pragma warning disable CS1591
|
|
|
|
public string Name
|
|
{
|
|
get { return Inner.Name; }
|
|
}
|
|
|
|
internal FileReference File
|
|
{
|
|
get { return Inner.File!; }
|
|
}
|
|
|
|
public UnrealTargetPlatform Platform
|
|
{
|
|
get { return Inner.Platform; }
|
|
}
|
|
|
|
public UnrealTargetConfiguration Configuration
|
|
{
|
|
get { return Inner.Configuration; }
|
|
}
|
|
|
|
public string Architecture
|
|
{
|
|
get { return Inner.Architecture; }
|
|
}
|
|
|
|
public FileReference? ProjectFile
|
|
{
|
|
get { return Inner.ProjectFile; }
|
|
}
|
|
|
|
public ReadOnlyBuildVersion Version
|
|
{
|
|
get { return Inner.Version; }
|
|
}
|
|
|
|
public TargetType Type
|
|
{
|
|
get { return Inner.Type; }
|
|
}
|
|
|
|
public BuildSettingsVersion DefaultBuildSettings
|
|
{
|
|
get { return Inner.DefaultBuildSettings; }
|
|
}
|
|
|
|
internal ConfigValueTracker ConfigValueTracker
|
|
{
|
|
get { return Inner.ConfigValueTracker; }
|
|
}
|
|
|
|
public bool bUsesSteam
|
|
{
|
|
get { return Inner.bUsesSteam; }
|
|
}
|
|
|
|
public bool bUsesCEF3
|
|
{
|
|
get { return Inner.bUsesCEF3; }
|
|
}
|
|
|
|
public bool bUsesSlate
|
|
{
|
|
get { return Inner.bUsesSlate; }
|
|
}
|
|
|
|
public bool bUseStaticCRT
|
|
{
|
|
get { return Inner.bUseStaticCRT; }
|
|
}
|
|
|
|
public bool bDebugBuildsActuallyUseDebugCRT
|
|
{
|
|
get { return Inner.bDebugBuildsActuallyUseDebugCRT; }
|
|
}
|
|
|
|
public bool bLegalToDistributeBinary
|
|
{
|
|
get { return Inner.bLegalToDistributeBinary; }
|
|
}
|
|
|
|
public UnrealTargetConfiguration UndecoratedConfiguration
|
|
{
|
|
get { return Inner.UndecoratedConfiguration; }
|
|
}
|
|
|
|
public bool bAllowHotReload
|
|
{
|
|
get { return Inner.bAllowHotReload; }
|
|
}
|
|
|
|
[Obsolete("bBuildAllPlugins has been deprecated. Use bPrecompile to build all modules which are not part of the target.")]
|
|
public bool bBuildAllPlugins
|
|
{
|
|
get { return Inner.bBuildAllPlugins; }
|
|
}
|
|
|
|
public bool bBuildAllModules
|
|
{
|
|
get { return Inner.bBuildAllModules; }
|
|
}
|
|
|
|
public IEnumerable<string> AdditionalPlugins
|
|
{
|
|
get { return Inner.AdditionalPlugins; }
|
|
}
|
|
|
|
public IEnumerable<string> EnablePlugins
|
|
{
|
|
get { return Inner.EnablePlugins; }
|
|
}
|
|
|
|
public IEnumerable<string> DisablePlugins
|
|
{
|
|
get { return Inner.DisablePlugins; }
|
|
}
|
|
|
|
public IEnumerable<string> BuildPlugins
|
|
{
|
|
get { return Inner.BuildPlugins; }
|
|
}
|
|
|
|
public bool bRuntimeDependenciesComeFromBuildPlugins
|
|
{
|
|
get { return Inner.bRuntimeDependenciesComeFromBuildPlugins; }
|
|
}
|
|
|
|
public string PakSigningKeysFile
|
|
{
|
|
get { return Inner.PakSigningKeysFile; }
|
|
}
|
|
|
|
public string SolutionDirectory
|
|
{
|
|
get { return Inner.SolutionDirectory; }
|
|
}
|
|
|
|
public string CustomConfig
|
|
{
|
|
get { return Inner.CustomConfig; }
|
|
}
|
|
|
|
public bool? bBuildInSolutionByDefault
|
|
{
|
|
get { return Inner.bBuildInSolutionByDefault; }
|
|
}
|
|
|
|
public string ExeBinariesSubFolder
|
|
{
|
|
get { return Inner.ExeBinariesSubFolder; }
|
|
}
|
|
|
|
public EGeneratedCodeVersion GeneratedCodeVersion
|
|
{
|
|
get { return Inner.GeneratedCodeVersion; }
|
|
}
|
|
public bool bEnableMeshEditor
|
|
{
|
|
get { return Inner.bEnableMeshEditor; }
|
|
}
|
|
|
|
public bool bUseVerse
|
|
{
|
|
get { return Inner.bUseVerse; }
|
|
}
|
|
|
|
public bool bCompileChaos
|
|
{
|
|
get { return Inner.bCompileChaos; }
|
|
}
|
|
|
|
public bool bUseChaos
|
|
{
|
|
get { return Inner.bUseChaos; }
|
|
}
|
|
|
|
public bool bUseChaosMemoryTracking
|
|
{
|
|
get { return Inner.bUseChaosMemoryTracking; }
|
|
}
|
|
|
|
public bool bUseChaosChecked
|
|
{
|
|
get { return Inner.bUseChaosChecked; }
|
|
}
|
|
|
|
public bool bCustomSceneQueryStructure
|
|
{
|
|
get { return Inner.bCustomSceneQueryStructure; }
|
|
}
|
|
|
|
public bool bCompilePhysX
|
|
{
|
|
get { return Inner.bCompilePhysX; }
|
|
}
|
|
|
|
public bool bCompileAPEX
|
|
{
|
|
get { return Inner.bCompileAPEX; }
|
|
}
|
|
|
|
public bool bCompileNvCloth
|
|
{
|
|
get { return Inner.bCompileNvCloth; }
|
|
}
|
|
|
|
public bool bCompileICU
|
|
{
|
|
get { return Inner.bCompileICU; }
|
|
}
|
|
|
|
public bool bCompileCEF3
|
|
{
|
|
get { return Inner.bCompileCEF3; }
|
|
}
|
|
|
|
public bool bCompileISPC
|
|
{
|
|
get { return Inner.bCompileISPC && GlobalDefinitions.Contains("UE_LARGE_WORLD_COORDINATES_DISABLED=1"); } // LWC_TODO: Temporarily disable ISPC when LWC is turned on. To be removed when double support is added to ISPC.
|
|
}
|
|
|
|
public bool bLWCDisabled
|
|
{
|
|
get { return GlobalDefinitions.Contains("UE_LARGE_WORLD_COORDINATES_DISABLED=1"); }
|
|
}
|
|
|
|
public bool bCompilePython
|
|
{
|
|
get { return Inner.bCompilePython; }
|
|
}
|
|
|
|
public bool bBuildEditor
|
|
{
|
|
get { return Inner.bBuildEditor; }
|
|
}
|
|
|
|
public bool bBuildRequiresCookedData
|
|
{
|
|
get { return Inner.bBuildRequiresCookedData; }
|
|
}
|
|
|
|
public bool bBuildWithEditorOnlyData
|
|
{
|
|
get { return Inner.bBuildWithEditorOnlyData; }
|
|
}
|
|
|
|
public bool bBuildDeveloperTools
|
|
{
|
|
get { return Inner.bBuildDeveloperTools; }
|
|
}
|
|
|
|
public bool bBuildTargetDeveloperTools
|
|
{
|
|
get { return Inner.bBuildTargetDeveloperTools; }
|
|
}
|
|
|
|
public bool bForceBuildTargetPlatforms
|
|
{
|
|
get { return Inner.bForceBuildTargetPlatforms; }
|
|
}
|
|
|
|
public bool bForceBuildShaderFormats
|
|
{
|
|
get { return Inner.bForceBuildShaderFormats; }
|
|
}
|
|
|
|
public bool bCompileCustomSQLitePlatform
|
|
{
|
|
get { return Inner.bCompileCustomSQLitePlatform; }
|
|
}
|
|
|
|
[Obsolete("bCompileLeanAndMeanUE is deprecated. Use bBuildDeveloperTools instead.")]
|
|
public bool bCompileLeanAndMeanUE
|
|
{
|
|
get { return Inner.bCompileLeanAndMeanUE; }
|
|
}
|
|
|
|
public bool bUseCacheFreedOSAllocs
|
|
{
|
|
get { return Inner.bUseCacheFreedOSAllocs; }
|
|
}
|
|
|
|
public bool bCompileAgainstEngine
|
|
{
|
|
get { return Inner.bCompileAgainstEngine; }
|
|
}
|
|
|
|
public bool bCompileAgainstCoreUObject
|
|
{
|
|
get { return Inner.bCompileAgainstCoreUObject; }
|
|
}
|
|
|
|
public bool bCompileAgainstApplicationCore
|
|
{
|
|
get { return Inner.bCompileAgainstApplicationCore; }
|
|
}
|
|
|
|
public bool bCompileRecast
|
|
{
|
|
get { return Inner.bCompileRecast; }
|
|
}
|
|
|
|
public bool bCompileNavmeshSegmentLinks
|
|
{
|
|
get { return Inner.bCompileNavmeshSegmentLinks; }
|
|
}
|
|
|
|
public bool bCompileNavmeshClusterLinks
|
|
{
|
|
get { return Inner.bCompileNavmeshClusterLinks; }
|
|
}
|
|
|
|
public bool bCompileSpeedTree
|
|
{
|
|
get { return Inner.bCompileSpeedTree; }
|
|
}
|
|
|
|
public bool bForceEnableExceptions
|
|
{
|
|
get { return Inner.bForceEnableExceptions; }
|
|
}
|
|
|
|
public bool bForceEnableObjCExceptions
|
|
{
|
|
get { return Inner.bForceEnableObjCExceptions; }
|
|
}
|
|
|
|
public bool bForceEnableRTTI
|
|
{
|
|
get { return Inner.bForceEnableRTTI; }
|
|
}
|
|
|
|
public bool bUseInlining
|
|
{
|
|
get { return Inner.bUseInlining; }
|
|
}
|
|
|
|
public bool bWithServerCode
|
|
{
|
|
get { return Inner.bWithServerCode; }
|
|
}
|
|
|
|
public bool bWithPushModel
|
|
{
|
|
get { return Inner.bWithPushModel; }
|
|
}
|
|
|
|
public bool bCompileWithStatsWithoutEngine
|
|
{
|
|
get { return Inner.bCompileWithStatsWithoutEngine; }
|
|
}
|
|
|
|
public bool bCompileWithPluginSupport
|
|
{
|
|
get { return Inner.bCompileWithPluginSupport; }
|
|
}
|
|
|
|
public bool bIncludePluginsForTargetPlatforms
|
|
{
|
|
get { return Inner.bIncludePluginsForTargetPlatforms; }
|
|
}
|
|
|
|
public bool bCompileWithAccessibilitySupport
|
|
{
|
|
get { return Inner.bCompileWithAccessibilitySupport; }
|
|
}
|
|
|
|
public bool bWithPerfCounters
|
|
{
|
|
get { return Inner.bWithPerfCounters; }
|
|
}
|
|
|
|
public bool bWithLiveCoding
|
|
{
|
|
get { return Inner.bWithLiveCoding; }
|
|
}
|
|
|
|
public bool bUseDebugLiveCodingConsole
|
|
{
|
|
get { return Inner.bUseDebugLiveCodingConsole; }
|
|
}
|
|
|
|
public bool bWithDirectXMath
|
|
{
|
|
get { return Inner.bWithDirectXMath; }
|
|
}
|
|
|
|
public bool bUseLoggingInShipping
|
|
{
|
|
get { return Inner.bUseLoggingInShipping; }
|
|
}
|
|
|
|
public bool bLoggingToMemoryEnabled
|
|
{
|
|
get { return Inner.bLoggingToMemoryEnabled; }
|
|
}
|
|
|
|
public bool bUseLauncherChecks
|
|
{
|
|
get { return Inner.bUseLauncherChecks; }
|
|
}
|
|
|
|
public bool bUseChecksInShipping
|
|
{
|
|
get { return Inner.bUseChecksInShipping; }
|
|
}
|
|
|
|
public bool bUseEstimatedUtcNow
|
|
{
|
|
get { return Inner.bUseEstimatedUtcNow; }
|
|
}
|
|
|
|
public bool bCompileFreeType
|
|
{
|
|
get { return Inner.bCompileFreeType; }
|
|
}
|
|
|
|
public bool bCompileForSize
|
|
{
|
|
get { return Inner.bCompileForSize; }
|
|
}
|
|
|
|
public bool bRetainFramePointers
|
|
{
|
|
get { return Inner.bRetainFramePointers; }
|
|
}
|
|
|
|
public bool bForceCompileDevelopmentAutomationTests
|
|
{
|
|
get { return Inner.bForceCompileDevelopmentAutomationTests; }
|
|
}
|
|
|
|
public bool bForceCompilePerformanceAutomationTests
|
|
{
|
|
get { return Inner.bForceCompilePerformanceAutomationTests; }
|
|
}
|
|
public bool bForceDisableAutomationTests
|
|
{
|
|
get { return Inner.bForceDisableAutomationTests; }
|
|
}
|
|
|
|
public bool bUseXGEController
|
|
{
|
|
get { return Inner.bUseXGEController; }
|
|
}
|
|
|
|
public bool bEventDrivenLoader
|
|
{
|
|
get { return Inner.bEventDrivenLoader; }
|
|
}
|
|
|
|
public PointerMemberBehavior? NativePointerMemberBehaviorOverride
|
|
{
|
|
get { return Inner.NativePointerMemberBehaviorOverride; }
|
|
}
|
|
|
|
[Obsolete("Use DefaultBuildSettings to determine the default settings used for this target instead")]
|
|
public bool bUseBackwardsCompatibleDefaults
|
|
{
|
|
#pragma warning disable CS0618
|
|
get { return Inner.bUseBackwardsCompatibleDefaults; }
|
|
#pragma warning restore CS0618
|
|
}
|
|
|
|
public bool bIWYU
|
|
{
|
|
get { return Inner.bIWYU; }
|
|
}
|
|
|
|
public bool bEnforceIWYU
|
|
{
|
|
get { return Inner.bEnforceIWYU; }
|
|
}
|
|
|
|
public bool bHasExports
|
|
{
|
|
get { return Inner.bHasExports; }
|
|
}
|
|
|
|
public bool bPrecompile
|
|
{
|
|
get { return Inner.bPrecompile; }
|
|
}
|
|
|
|
public bool bEnableOSX109Support
|
|
{
|
|
get { return Inner.bEnableOSX109Support; }
|
|
}
|
|
|
|
public bool bIsBuildingConsoleApplication
|
|
{
|
|
get { return Inner.bIsBuildingConsoleApplication; }
|
|
}
|
|
|
|
public bool bBuildAdditionalConsoleApp
|
|
{
|
|
get { return Inner.bBuildAdditionalConsoleApp; }
|
|
}
|
|
|
|
public bool bDisableSymbolCache
|
|
{
|
|
get { return Inner.bDisableSymbolCache; }
|
|
}
|
|
|
|
public bool bUseUnityBuild
|
|
{
|
|
get { return Inner.bUseUnityBuild; }
|
|
}
|
|
|
|
public bool bForceUnityBuild
|
|
{
|
|
get { return Inner.bForceUnityBuild; }
|
|
}
|
|
|
|
public bool bAdaptiveUnityDisablesOptimizations
|
|
{
|
|
get { return Inner.bAdaptiveUnityDisablesOptimizations; }
|
|
}
|
|
|
|
public bool bAdaptiveUnityDisablesPCH
|
|
{
|
|
get { return Inner.bAdaptiveUnityDisablesPCH; }
|
|
}
|
|
|
|
public bool bAdaptiveUnityDisablesPCHForProject
|
|
{
|
|
get { return Inner.bAdaptiveUnityDisablesPCHForProject; }
|
|
}
|
|
|
|
public bool bAdaptiveUnityCreatesDedicatedPCH
|
|
{
|
|
get { return Inner.bAdaptiveUnityCreatesDedicatedPCH; }
|
|
}
|
|
|
|
public bool bAdaptiveUnityEnablesEditAndContinue
|
|
{
|
|
get { return Inner.bAdaptiveUnityEnablesEditAndContinue; }
|
|
}
|
|
|
|
public bool bAdaptiveUnityCompilesHeaderFiles
|
|
{
|
|
get { return Inner.bAdaptiveUnityCompilesHeaderFiles; }
|
|
}
|
|
|
|
public int MinGameModuleSourceFilesForUnityBuild
|
|
{
|
|
get { return Inner.MinGameModuleSourceFilesForUnityBuild; }
|
|
}
|
|
|
|
public WarningLevel DefaultWarningLevel
|
|
{
|
|
get { return Inner.DefaultWarningLevel; }
|
|
}
|
|
|
|
public WarningLevel DeprecationWarningLevel
|
|
{
|
|
get { return Inner.DeprecationWarningLevel; }
|
|
}
|
|
|
|
public WarningLevel ShadowVariableWarningLevel
|
|
{
|
|
get { return Inner.ShadowVariableWarningLevel; }
|
|
}
|
|
|
|
public WarningLevel UnsafeTypeCastWarningLevel
|
|
{
|
|
get { return Inner.UnsafeTypeCastWarningLevel; }
|
|
}
|
|
|
|
public bool bUndefinedIdentifierErrors
|
|
{
|
|
get { return Inner.bUndefinedIdentifierErrors; }
|
|
}
|
|
|
|
public bool bWarningsAsErrors
|
|
{
|
|
get { return Inner.bWarningsAsErrors; }
|
|
}
|
|
|
|
public bool bUseFastMonoCalls
|
|
{
|
|
get { return Inner.bUseFastMonoCalls; }
|
|
}
|
|
|
|
public bool bUseFastSemanticsRenderContexts
|
|
{
|
|
get { return Inner.bUseFastSemanticsRenderContexts; }
|
|
}
|
|
|
|
public int NumIncludedBytesPerUnityCPP
|
|
{
|
|
get { return Inner.NumIncludedBytesPerUnityCPP; }
|
|
}
|
|
|
|
public bool bStressTestUnity
|
|
{
|
|
get { return Inner.bStressTestUnity; }
|
|
}
|
|
|
|
public bool bDisableDebugInfo
|
|
{
|
|
get { return Inner.bDisableDebugInfo; }
|
|
}
|
|
|
|
public bool bDisableDebugInfoForGeneratedCode
|
|
{
|
|
get { return Inner.bDisableDebugInfoForGeneratedCode; }
|
|
}
|
|
|
|
public bool bOmitPCDebugInfoInDevelopment
|
|
{
|
|
get { return Inner.bOmitPCDebugInfoInDevelopment; }
|
|
}
|
|
|
|
public bool bUsePDBFiles
|
|
{
|
|
get { return Inner.bUsePDBFiles; }
|
|
}
|
|
|
|
public bool bUsePCHFiles
|
|
{
|
|
get { return Inner.bUsePCHFiles; }
|
|
}
|
|
|
|
public bool bPreprocessOnly
|
|
{
|
|
get { return Inner.bPreprocessOnly; }
|
|
}
|
|
|
|
public int MinFilesUsingPrecompiledHeader
|
|
{
|
|
get { return Inner.MinFilesUsingPrecompiledHeader; }
|
|
}
|
|
|
|
public bool bForcePrecompiledHeaderForGameModules
|
|
{
|
|
get { return Inner.bForcePrecompiledHeaderForGameModules; }
|
|
}
|
|
|
|
public bool bUseIncrementalLinking
|
|
{
|
|
get { return Inner.bUseIncrementalLinking; }
|
|
}
|
|
|
|
public bool bAllowLTCG
|
|
{
|
|
get { return Inner.bAllowLTCG; }
|
|
}
|
|
public bool bPGOProfile
|
|
{
|
|
get { return Inner.bPGOProfile; }
|
|
}
|
|
|
|
public bool bPGOOptimize
|
|
{
|
|
get { return Inner.bPGOOptimize; }
|
|
}
|
|
|
|
public bool bSupportEditAndContinue
|
|
{
|
|
get { return Inner.bSupportEditAndContinue; }
|
|
}
|
|
|
|
public bool bOmitFramePointers
|
|
{
|
|
get { return Inner.bOmitFramePointers; }
|
|
}
|
|
|
|
public bool bEnableCppModules
|
|
{
|
|
get { return Inner.bEnableCppModules; }
|
|
}
|
|
|
|
[Obsolete("bStripSymbolsOnIOS has been deprecated. Use IOSPlatform.bStripSymbols instead.")]
|
|
public bool bStripSymbolsOnIOS
|
|
{
|
|
get { return IOSPlatform.bStripSymbols; }
|
|
}
|
|
|
|
public bool bUseMallocProfiler
|
|
{
|
|
get { return Inner.bUseMallocProfiler; }
|
|
}
|
|
|
|
public bool bUseSharedPCHs
|
|
{
|
|
get { return Inner.bUseSharedPCHs; }
|
|
}
|
|
|
|
public bool bUseShippingPhysXLibraries
|
|
{
|
|
get { return Inner.bUseShippingPhysXLibraries; }
|
|
}
|
|
|
|
public bool bUseCheckedPhysXLibraries
|
|
{
|
|
get { return Inner.bUseCheckedPhysXLibraries; }
|
|
}
|
|
|
|
public bool bCheckLicenseViolations
|
|
{
|
|
get { return Inner.bCheckLicenseViolations; }
|
|
}
|
|
|
|
public bool bBreakBuildOnLicenseViolation
|
|
{
|
|
get { return Inner.bBreakBuildOnLicenseViolation; }
|
|
}
|
|
|
|
public bool? bUseFastPDBLinking
|
|
{
|
|
get { return Inner.bUseFastPDBLinking; }
|
|
}
|
|
|
|
public bool bCreateMapFile
|
|
{
|
|
get { return Inner.bCreateMapFile; }
|
|
}
|
|
|
|
public bool bAllowRuntimeSymbolFiles
|
|
{
|
|
get { return Inner.bAllowRuntimeSymbolFiles; }
|
|
}
|
|
|
|
public string? BundleVersion
|
|
{
|
|
get { return Inner.BundleVersion; }
|
|
}
|
|
|
|
public bool bDeployAfterCompile
|
|
{
|
|
get { return Inner.bDeployAfterCompile; }
|
|
}
|
|
|
|
[Obsolete("bCreateStubIPA has been deprecated. Use IOSPlatform.bCreateStubIPA instead.")]
|
|
public bool bCreateStubIPA
|
|
{
|
|
get { return IOSPlatform.bCreateStubIPA; }
|
|
}
|
|
|
|
public bool bAllowRemotelyCompiledPCHs
|
|
{
|
|
get { return Inner.bAllowRemotelyCompiledPCHs; }
|
|
}
|
|
|
|
public bool bCheckSystemHeadersForModification
|
|
{
|
|
get { return Inner.bCheckSystemHeadersForModification; }
|
|
}
|
|
|
|
public bool bDisableLinking
|
|
{
|
|
get { return Inner.bDisableLinking; }
|
|
}
|
|
|
|
public bool bFormalBuild
|
|
{
|
|
get { return Inner.bFormalBuild; }
|
|
}
|
|
|
|
public bool bUseAdaptiveUnityBuild
|
|
{
|
|
get { return Inner.bUseAdaptiveUnityBuild; }
|
|
}
|
|
|
|
public bool bFlushBuildDirOnRemoteMac
|
|
{
|
|
get { return Inner.bFlushBuildDirOnRemoteMac; }
|
|
}
|
|
|
|
public bool bPrintToolChainTimingInfo
|
|
{
|
|
get { return Inner.bPrintToolChainTimingInfo; }
|
|
}
|
|
|
|
public bool bParseTimingInfoForTracing
|
|
{
|
|
get { return Inner.bParseTimingInfoForTracing; }
|
|
}
|
|
|
|
public bool bPublicSymbolsByDefault
|
|
{
|
|
get { return Inner.bPublicSymbolsByDefault; }
|
|
}
|
|
|
|
public string? ToolChainName
|
|
{
|
|
get { return Inner.ToolChainName; }
|
|
}
|
|
|
|
public bool bLegacyPublicIncludePaths
|
|
{
|
|
get { return Inner.bLegacyPublicIncludePaths; }
|
|
}
|
|
|
|
public CppStandardVersion CppStandard
|
|
{
|
|
get { return Inner.CppStandard; }
|
|
}
|
|
|
|
internal bool bNoManifestChanges
|
|
{
|
|
get { return Inner.bNoManifestChanges; }
|
|
}
|
|
|
|
public string? BuildVersion
|
|
{
|
|
get { return Inner.BuildVersion; }
|
|
}
|
|
|
|
public TargetLinkType LinkType
|
|
{
|
|
get { return Inner.LinkType; }
|
|
}
|
|
|
|
public IReadOnlyList<string> GlobalDefinitions
|
|
{
|
|
get { return Inner.GlobalDefinitions.AsReadOnly(); }
|
|
}
|
|
|
|
public IReadOnlyList<string> ProjectDefinitions
|
|
{
|
|
get { return Inner.ProjectDefinitions.AsReadOnly(); }
|
|
}
|
|
|
|
public string? LaunchModuleName
|
|
{
|
|
get { return Inner.LaunchModuleName; }
|
|
}
|
|
|
|
public string? ExportPublicHeader
|
|
{
|
|
get { return Inner.ExportPublicHeader; }
|
|
}
|
|
|
|
public IReadOnlyList<string> ExtraModuleNames
|
|
{
|
|
get { return Inner.ExtraModuleNames.AsReadOnly(); }
|
|
}
|
|
|
|
public IReadOnlyList<FileReference> ManifestFileNames
|
|
{
|
|
get { return Inner.ManifestFileNames.AsReadOnly(); }
|
|
}
|
|
|
|
public IReadOnlyList<FileReference> DependencyListFileNames
|
|
{
|
|
get { return Inner.DependencyListFileNames.AsReadOnly(); }
|
|
}
|
|
|
|
public TargetBuildEnvironment BuildEnvironment
|
|
{
|
|
get { return Inner.BuildEnvironment; }
|
|
}
|
|
|
|
public bool bOverrideBuildEnvironment
|
|
{
|
|
get { return Inner.bOverrideBuildEnvironment; }
|
|
}
|
|
|
|
public IReadOnlyList<TargetInfo> PreBuildTargets
|
|
{
|
|
get { return Inner.PreBuildTargets; }
|
|
}
|
|
|
|
public IReadOnlyList<string> PreBuildSteps
|
|
{
|
|
get { return Inner.PreBuildSteps; }
|
|
}
|
|
|
|
public IReadOnlyList<string> PostBuildSteps
|
|
{
|
|
get { return Inner.PostBuildSteps; }
|
|
}
|
|
|
|
public IReadOnlyList<string> AdditionalBuildProducts
|
|
{
|
|
get { return Inner.AdditionalBuildProducts; }
|
|
}
|
|
|
|
public string? AdditionalCompilerArguments
|
|
{
|
|
get { return Inner.AdditionalCompilerArguments; }
|
|
}
|
|
|
|
public string? AdditionalLinkerArguments
|
|
{
|
|
get { return Inner.AdditionalLinkerArguments; }
|
|
}
|
|
|
|
public string? GeneratedProjectName
|
|
{
|
|
get { return Inner.GeneratedProjectName; }
|
|
}
|
|
|
|
public ReadOnlyAndroidTargetRules AndroidPlatform
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public ReadOnlyLinuxTargetRules LinuxPlatform
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public ReadOnlyIOSTargetRules IOSPlatform
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public ReadOnlyMacTargetRules MacPlatform
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public ReadOnlyPS4TargetRules PS4Platform
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public ReadOnlySwitchTargetRules SwitchPlatform
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public ReadOnlyWindowsTargetRules WindowsPlatform
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public ReadOnlyHoloLensTargetRules HoloLensPlatform
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public ReadOnlyXboxOneTargetRules XboxOnePlatform
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public bool bShouldCompileAsDLL
|
|
{
|
|
get { return Inner.bShouldCompileAsDLL; }
|
|
}
|
|
|
|
public bool bGenerateProjectFiles
|
|
{
|
|
get { return Inner.bGenerateProjectFiles; }
|
|
}
|
|
|
|
public bool bIsEngineInstalled
|
|
{
|
|
get { return Inner.bIsEngineInstalled; }
|
|
}
|
|
|
|
|
|
public IReadOnlyList<string>? DisableUnityBuildForModules
|
|
{
|
|
get { return Inner.DisableUnityBuildForModules; }
|
|
}
|
|
|
|
public IReadOnlyList<string>? EnableOptimizeCodeForModules
|
|
{
|
|
get { return Inner.EnableOptimizeCodeForModules; }
|
|
}
|
|
|
|
public IReadOnlyList<string>? DisableOptimizeCodeForModules
|
|
{
|
|
get { return Inner.DisableOptimizeCodeForModules; }
|
|
}
|
|
|
|
public IReadOnlyList<UnrealTargetPlatform>? OptedInModulePlatforms
|
|
{
|
|
get { return Inner.OptedInModulePlatforms; }
|
|
}
|
|
|
|
#pragma warning restore C1591
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Provide access to the RelativeEnginePath property for code referencing ModuleRules.BuildConfiguration.
|
|
/// </summary>
|
|
public string RelativeEnginePath
|
|
{
|
|
get { return Unreal.EngineDirectory.MakeRelativeTo(DirectoryReference.GetCurrentDirectory()); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provide access to the UEThirdPartySourceDirectory property for code referencing ModuleRules.UEBuildConfiguration.
|
|
/// </summary>
|
|
public string UEThirdPartySourceDirectory
|
|
{
|
|
get { return "ThirdParty/"; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provide access to the UEThirdPartyBinariesDirectory property for code referencing ModuleRules.UEBuildConfiguration.
|
|
/// </summary>
|
|
public string UEThirdPartyBinariesDirectory
|
|
{
|
|
get { return "../Binaries/ThirdParty/"; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Checks if current platform is part of a given platform group
|
|
/// </summary>
|
|
/// <param name="Group">The platform group to check</param>
|
|
/// <returns>True if current platform is part of a platform group</returns>
|
|
public bool IsInPlatformGroup(UnrealPlatformGroup Group)
|
|
{
|
|
return UEBuildPlatform.IsPlatformInGroup(Platform, Group);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets diagnostic messages about default settings which have changed in newer versions of the engine
|
|
/// </summary>
|
|
/// <param name="Diagnostics">List of messages to be appended to</param>
|
|
internal void GetBuildSettingsInfo(List<string> Diagnostics)
|
|
{
|
|
Inner.GetBuildSettingsInfo(Diagnostics);
|
|
}
|
|
|
|
public bool IsPlatformOptedIn(UnrealTargetPlatform Platform)
|
|
{
|
|
return Inner.OptedInModulePlatforms == null || Inner.OptedInModulePlatforms.Contains(Platform);
|
|
}
|
|
}
|
|
}
|