Files
UnrealEngine/Engine/Source/Programs/UnrealBuildTool/Configuration/ReadOnlyTargetRules.cs
2025-05-18 13:04:45 +08:00

749 lines
28 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using EpicGames.Core;
using Microsoft.Extensions.Logging;
using UnrealBuildBase;
namespace UnrealBuildTool
{
/// <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>
readonly TargetRules Inner;
/// <summary>
/// Constructor
/// </summary>
/// <param name="inner">The TargetRules instance to wrap around</param>
public ReadOnlyTargetRules(TargetRules inner)
{
Inner = inner;
AndroidPlatform = new ReadOnlyAndroidTargetRules(inner.AndroidPlatform);
IOSPlatform = new ReadOnlyIOSTargetRules(inner.IOSPlatform);
LinuxPlatform = new ReadOnlyLinuxTargetRules(inner.LinuxPlatform);
MacPlatform = new ReadOnlyMacTargetRules(inner.MacPlatform);
WindowsPlatform = new ReadOnlyWindowsTargetRules(inner.WindowsPlatform);
CppCompileWarningSettings = new ReadOnlyCppCompileWarnings(inner.CppCompileWarningSettings);
}
/// <summary>
/// Accessors for fields on the inner TargetRules instance
/// </summary>
#region Read-only accessor properties
#pragma warning disable CS1591
public string Name => Inner.Name;
public string OriginalName => Inner.OriginalName;
internal FileReference File => Inner.File!;
internal FileReference TargetSourceFile => Inner.TargetSourceFile!;
internal IReadOnlySet<FileReference> TargetFiles => Inner.TargetFiles!;
public object? AdditionalData => Inner.AdditionalData;
public UnrealTargetPlatform Platform => Inner.Platform;
public UnrealTargetConfiguration Configuration => Inner.Configuration;
public UnrealArchitectures Architectures => Inner.Architectures;
public UnrealIntermediateEnvironment IntermediateEnvironment => Inner.IntermediateEnvironment;
public UnrealArch Architecture => Inner.Architecture;
public FileReference? ProjectFile => Inner.ProjectFile;
public ReadOnlyBuildVersion Version => Inner.Version;
public TargetType Type => Inner.Type;
/// <inheritdoc cref="TargetRules.Logger"/>
public ILogger Logger => Inner.Logger;
public BuildSettingsVersion DefaultBuildSettings => Inner.DefaultBuildSettings;
public EngineIncludeOrderVersion? ForcedIncludeOrder => Inner.ForcedIncludeOrder;
public EngineIncludeOrderVersion IncludeOrderVersion => Inner.IncludeOrderVersion;
internal ConfigValueTracker ConfigValueTracker => Inner.ConfigValueTracker;
public string? OutputFile => Inner.OutputFile;
[Obsolete("Deprecated in UE5.5 - No longer used in engine.")]
public bool bUsesSteam => Inner.bUsesSteam;
public bool bUsesCEF3 => Inner.bUsesCEF3;
public bool bUsesSlate => Inner.bUsesSlate;
public bool bUseStaticCRT => Inner.bUseStaticCRT;
public bool bDebugBuildsActuallyUseDebugCRT => Inner.bDebugBuildsActuallyUseDebugCRT;
public bool bLegalToDistributeBinary => Inner.bLegalToDistributeBinary;
public UnrealTargetConfiguration UndecoratedConfiguration => Inner.UndecoratedConfiguration;
public string DecoratedSeparator => Inner.DecoratedSeparator;
public bool bAllowHotReload => Inner.bAllowHotReload;
public bool bBuildAllModules => Inner.bBuildAllModules;
public IReadOnlyList<string> AdditionalPlugins => Inner.AdditionalPlugins;
public IReadOnlyList<string> EnablePlugins => Inner.EnablePlugins;
public IReadOnlyList<string> DisablePlugins => Inner.DisablePlugins;
public IReadOnlyList<string> OptionalPlugins => Inner.OptionalPlugins;
public bool bAllowEnginePluginsEnabledByDefault => Inner.bAllowEnginePluginsEnabledByDefault;
public WarningLevel DisablePluginsConflictWarningLevel => Inner.CppCompileWarningSettings.DisablePluginsConflictWarningLevel;
public IReadOnlyList<string> BuildPlugins => Inner.BuildPlugins;
public IReadOnlyList<string> InternalPluginDependencies => Inner.InternalPluginDependencies;
public bool bRuntimeDependenciesComeFromBuildPlugins => Inner.bRuntimeDependenciesComeFromBuildPlugins;
public string PakSigningKeysFile => Inner.PakSigningKeysFile;
public string SolutionDirectory => Inner.SolutionDirectory;
public string CustomConfig => Inner.CustomConfig;
public bool? bBuildInSolutionByDefault => Inner.bBuildInSolutionByDefault;
public string ExeBinariesSubFolder => Inner.ExeBinariesSubFolder;
public EGeneratedCodeVersion GeneratedCodeVersion => Inner.GeneratedCodeVersion;
public bool bEnableMeshEditor => Inner.bEnableMeshEditor;
public bool bUseVerseBPVM => Inner.bUseVerseBPVM;
public bool bUseVerseVM => !bUseVerseBPVM || Inner.GlobalDefinitions.Contains("WITH_VERSE_VM=1") || Inner.GlobalDefinitions.Contains("WITH_VERSE_VM=WITH_COREUOBJECT");
public bool bUseAutoRTFMCompiler => Inner.bUseAutoRTFMCompiler;
public bool bUseAutoRTFMVerifier => Inner.bUseAutoRTFMVerifier;
public bool bAutoRTFMVerify => Inner.bAutoRTFMVerify;
public bool bAutoRTFMClosedStaticLinkage => Inner.bAutoRTFMClosedStaticLinkage;
[Obsolete("Deprecated in UE5.1 - No longer used as Chaos is always enabled.")]
public bool bCompileChaos => Inner.bCompileChaos;
[Obsolete("Deprecated in UE5.1 - No longer used as Chaos is always enabled.")]
public bool bUseChaos => Inner.bUseChaos;
public bool bUseChaosMemoryTracking => Inner.bUseChaosMemoryTracking;
public bool bCompileChaosVisualDebuggerSupport => Inner.bCompileChaosVisualDebuggerSupport;
public bool bUseChaosChecked => Inner.bUseChaosChecked;
[Obsolete("Deprecated in UE5.1 - No longer used in engine.")]
public bool bCustomSceneQueryStructure => Inner.bCustomSceneQueryStructure;
[Obsolete("Deprecated in UE5.1 - No longer used as Chaos is always enabled.")]
public bool bCompilePhysX => Inner.bCompilePhysX;
[Obsolete("Deprecated in UE5.1 - No longer used as Chaos is always enabled.")]
public bool bCompileAPEX => Inner.bCompileAPEX;
[Obsolete("Deprecated in UE5.1 - No longer used as Chaos is always enabled.")]
public bool bCompileNvCloth => Inner.bCompileNvCloth;
public bool bCompileICU => Inner.bCompileICU;
public bool bCompileCEF3 => Inner.bCompileCEF3;
public bool bCompileISPC => Inner.bCompileISPC;
public bool bUseGameplayDebugger => Inner.bUseGameplayDebugger;
public bool bUseGameplayDebuggerCore => Inner.bUseGameplayDebuggerCore;
public bool bCompileIoStoreOnDemand => Inner.bCompileIoStoreOnDemand;
public bool bUseIris => Inner.bUseIris;
public bool bTrackRHIResourceInfoForTest => Inner.bTrackRHIResourceInfoForTest;
[Obsolete("Deprecated in UE5.4 - No longer used.")]
public bool bCompileIntelMetricsDiscovery => Inner.bCompileIntelMetricsDiscovery;
public bool bCompilePython => Inner.bCompilePython;
public bool bBuildEditor => Inner.bBuildEditor;
public bool bBuildRequiresCookedData => Inner.bBuildRequiresCookedData;
public bool bBuildWithEditorOnlyData => Inner.bBuildWithEditorOnlyData;
public bool bBuildDeveloperTools => Inner.bBuildDeveloperTools;
public bool bBuildTargetDeveloperTools => Inner.bBuildTargetDeveloperTools;
public bool bForceBuildTargetPlatforms => Inner.bForceBuildTargetPlatforms;
public bool bForceBuildShaderFormats => Inner.bForceBuildShaderFormats;
public bool bNeedsExtraShaderFormats => Inner.bNeedsExtraShaderFormats;
public bool bCompileCustomSQLitePlatform => Inner.bCompileCustomSQLitePlatform;
public bool bUseCacheFreedOSAllocs => Inner.bUseCacheFreedOSAllocs;
public bool bCompileAgainstEngine => Inner.bCompileAgainstEngine;
public bool bCompileAgainstCoreUObject => Inner.bCompileAgainstCoreUObject;
public bool bCompileAgainstApplicationCore => Inner.bCompileAgainstApplicationCore;
public bool bEnableTrace => Inner.bEnableTrace;
public bool bForceEnableTrace => Inner.bForceEnableTrace;
public bool bCompileAgainstEditor => Inner.bCompileAgainstEditor;
public bool bCompileRecast => Inner.bCompileRecast;
public bool bCompileNavmeshSegmentLinks => Inner.bCompileNavmeshSegmentLinks;
public bool bCompileNavmeshClusterLinks => Inner.bCompileNavmeshClusterLinks;
public bool bCompileSpeedTree => Inner.bCompileSpeedTree;
public bool bForceEnableExceptions => Inner.bForceEnableExceptions;
public bool bForceEnableObjCExceptions => Inner.bForceEnableObjCExceptions;
public bool bForceEnableRTTI => Inner.bForceEnableRTTI;
public bool bEnablePrivateBuildInformation => Inner.bEnablePrivateBuildInformation;
public bool bEnablePIE => Inner.bEnablePIE;
public bool bEnableStackProtection => Inner.bEnableStackProtection;
public bool bUseInlining => Inner.bUseInlining;
public bool bWithClientCode => Inner.bWithClientCode;
public bool bWithServerCode => Inner.bWithServerCode;
public bool bFNameOutlineNumber => Inner.bFNameOutlineNumber;
public bool bWithPushModel => Inner.bWithPushModel;
public bool bCompileWithStatsWithoutEngine => Inner.bCompileWithStatsWithoutEngine;
public bool bCompileWithPluginSupport => Inner.bCompileWithPluginSupport;
public bool bIncludePluginsForTargetPlatforms => Inner.bIncludePluginsForTargetPlatforms;
public bool bCompileWithAccessibilitySupport => Inner.bCompileWithAccessibilitySupport;
public bool bWithPerfCounters => Inner.bWithPerfCounters;
public bool bWithLiveCoding => Inner.bWithLiveCoding;
public bool bUseDebugLiveCodingConsole => Inner.bUseDebugLiveCodingConsole;
[Obsolete("Deprecated in UE 5.6 - DirectXMath path was incompatible with LWC and unused since 5.0")]
public bool bWithDirectXMath => Inner.bWithDirectXMath;
public bool bWithFixedTimeStepSupport => Inner.bWithFixedTimeStepSupport;
public bool bUseLoggingInShipping => Inner.bUseLoggingInShipping;
public bool bUseConsoleInShipping => Inner.bUseConsoleInShipping;
public bool bLoggingToMemoryEnabled => Inner.bLoggingToMemoryEnabled;
public bool bUseLauncherChecks => Inner.bUseLauncherChecks;
public bool bUseChecksInShipping => Inner.bUseChecksInShipping;
public bool bAllowProfileGPUInTest => Inner.bAllowProfileGPUInTest;
public bool bAllowProfileGPUInShipping => Inner.bAllowProfileGPUInShipping;
public bool bTCHARIsUTF8 => Inner.bTCHARIsUTF8;
public bool bUseEstimatedUtcNow => Inner.bUseEstimatedUtcNow;
public bool bCompileFreeType => Inner.bCompileFreeType;
public bool bUseExecCommandsInShipping => Inner.bUseExecCommandsInShipping;
[Obsolete("Deprecated in UE5.1 - Please use OptimizationLevel instead.")]
public bool bCompileForSize => Inner.bCompileForSize;
public OptimizationMode OptimizationLevel => Inner.OptimizationLevel;
public FPSemanticsMode FPSemantics => Inner.FPSemantics;
public bool bRetainFramePointers => Inner.bRetainFramePointers;
public bool bForceCompileDevelopmentAutomationTests => Inner.bForceCompileDevelopmentAutomationTests;
public bool bForceCompilePerformanceAutomationTests => Inner.bForceCompilePerformanceAutomationTests;
public bool bForceDisableAutomationTests => Inner.bForceDisableAutomationTests;
public bool bUseXGEController => Inner.bUseXGEController;
public bool bEventDrivenLoader => Inner.bEventDrivenLoader;
public PointerMemberBehavior? NativePointerMemberBehaviorOverride => Inner.NativePointerMemberBehaviorOverride;
public bool bIWYU => Inner.bIWYU;
public bool bIncludeHeaders => Inner.bIncludeHeaders;
public bool bHeadersOnly => Inner.bHeadersOnly;
public bool bEnforceIWYU => Inner.bEnforceIWYU;
public bool bWarnAboutMonolithicHeadersIncluded => Inner.bWarnAboutMonolithicHeadersIncluded;
public bool bHasExports => Inner.bHasExports;
public bool bPrecompile => Inner.bPrecompile;
public bool bEnableOSX109Support => Inner.bEnableOSX109Support;
public bool bIsBuildingConsoleApplication => Inner.bIsBuildingConsoleApplication;
public bool bBuildAdditionalConsoleApp => Inner.bBuildAdditionalConsoleApp;
public bool bBuildConsoleAppOnly => Inner.bBuildConsoleAppOnly;
public bool bDisableSymbolCache => Inner.bDisableSymbolCache;
public bool bUseUnityBuild => Inner.bUseUnityBuild;
public bool bForceUnityBuild => Inner.bForceUnityBuild;
public bool bAlwaysUseUnityForGeneratedFiles => Inner.bAlwaysUseUnityForGeneratedFiles;
public IReadOnlyList<string>? DisableMergingModuleAndGeneratedFilesInUnityFiles => Inner.DisableMergingModuleAndGeneratedFilesInUnityFiles;
public bool bAdaptiveUnityDisablesOptimizations => Inner.bAdaptiveUnityDisablesOptimizations;
public bool bAdaptiveUnityDisablesPCH => Inner.bAdaptiveUnityDisablesPCH;
public bool bAdaptiveUnityDisablesPCHForProject => Inner.bAdaptiveUnityDisablesPCHForProject;
public bool bAdaptiveUnityCreatesDedicatedPCH => Inner.bAdaptiveUnityCreatesDedicatedPCH;
public bool bAdaptiveUnityEnablesEditAndContinue => Inner.bAdaptiveUnityEnablesEditAndContinue;
public bool bAdaptiveUnityCompilesHeaderFiles => Inner.bAdaptiveUnityCompilesHeaderFiles;
public int MinGameModuleSourceFilesForUnityBuild => Inner.MinGameModuleSourceFilesForUnityBuild;
public bool bValidateFormatStrings => Inner.bValidateFormatStrings;
public WarningLevel DefaultWarningLevel => Inner.DefaultWarningLevel;
[Obsolete("Deprecated in UE5.6 - Replace with ReadOnlyTargetRules.CppCompileWarningSettings.DeprecationWarningLevel")]
public WarningLevel DeprecationWarningLevel => Inner.CppCompileWarningSettings.DeprecationWarningLevel;
public ReadOnlyCppCompileWarnings CppCompileWarningSettings { get; init; }
[Obsolete("Deprecated in UE5.6 - Replace with ReadOnlyTargetRules.CppCompileWarningSettings.ShadowVariableWarningLevel")]
public WarningLevel ShadowVariableWarningLevel => Inner.CppCompileWarningSettings.ShadowVariableWarningLevel;
[Obsolete("Deprecated in UE5.6 - Replace with ReadOnlyTargetRules.CppCompileWarningSettings.UnsafeTypeCastWarningLevel")]
public WarningLevel UnsafeTypeCastWarningLevel => Inner.CppCompileWarningSettings.UnsafeTypeCastWarningLevel;
[Obsolete("Deprecated in UE5.6 - Replace with ReadOnlyTargetRules.CppCompileWarningSettings.UndefinedIdentifierWarningLevel")]
public WarningLevel UndefinedIdentifierWarningLevel => Inner.CppCompileWarningSettings.UndefinedIdentifierWarningLevel;
[Obsolete("Deprecated in UE5.5 - Replace with ModuleRules.UndefinedIdentifierWarningLevel")]
public bool bUndefinedIdentifierErrors => Inner.bUndefinedIdentifierErrors;
[Obsolete("Deprecated in UE5.6 - Replace with ReadOnlyTargetRules.CppCompileWarningSettings.PCHPerformanceIssueWarningLevel")]
public WarningLevel PCHPerformanceIssueWarningLevel => Inner.CppCompileWarningSettings.PCHPerformanceIssueWarningLevel;
[Obsolete("Deprecated in UE5.6 - Replace with ReadOnlyTargetRules.CppCompileWarningSettings.ModuleIncludePathWarningLevel")]
public WarningLevel ModuleIncludePathWarningLevel => Inner.CppCompileWarningSettings.ModuleIncludePathWarningLevel;
[Obsolete("Deprecated in UE5.6 - Replace with ReadOnlyTargetRules.CppCompileWarningSettings.ModuleIncludePrivateWarningLevel")]
public WarningLevel ModuleIncludePrivateWarningLevel => Inner.CppCompileWarningSettings.ModuleIncludePrivateWarningLevel;
[Obsolete("Deprecated in UE5.6 - Replace with ReadOnlyTargetRules.CppCompileWarningSettings.ModuleIncludeSubdirectoryWarningLevel")]
public WarningLevel ModuleIncludeSubdirectoryWarningLevel => Inner.CppCompileWarningSettings.ModuleIncludeSubdirectoryWarningLevel;
public bool bShowIncludes => Inner.bShowIncludes;
public bool bWarningsAsErrors => Inner.bWarningsAsErrors;
public bool bUseFastMonoCalls => Inner.bUseFastMonoCalls;
public int NumIncludedBytesPerUnityCPP => Inner.NumIncludedBytesPerUnityCPP;
public bool bDisableModuleNumIncludedBytesPerUnityCPPOverride => Inner.bDisableModuleNumIncludedBytesPerUnityCPPOverride;
public bool bStressTestUnity => Inner.bStressTestUnity;
[Obsolete("Deprecated in UE5.6")]
public bool bDetailedUnityFiles => Inner.bDetailedUnityFiles;
[Obsolete("Deprecated in UE5.4 - Replace with ReadOnlyTargetRules.DebugInfo")]
public bool bDisableDebugInfo => Inner.bDisableDebugInfo;
public DebugInfoMode DebugInfo => Inner.DebugInfo;
public IReadOnlySet<string> DisableDebugInfoModules => Inner.DisableDebugInfoModules;
public IReadOnlySet<string> DisableDebugInfoPlugins => Inner.DisableDebugInfoPlugins;
public DebugInfoMode DebugInfoLineTablesOnly => Inner.DebugInfoLineTablesOnly;
public IReadOnlySet<string> DebugInfoLineTablesOnlyModules => Inner.DebugInfoLineTablesOnlyModules;
public IReadOnlySet<string> DebugInfoLineTablesOnlyPlugins => Inner.DebugInfoLineTablesOnlyPlugins;
public bool bDisableDebugInfoForGeneratedCode => Inner.bDisableDebugInfoForGeneratedCode;
public bool bOmitPCDebugInfoInDevelopment => Inner.bOmitPCDebugInfoInDevelopment;
public bool bUsePDBFiles => Inner.bUsePDBFiles;
public bool bUsePCHFiles => Inner.bUsePCHFiles;
public bool bDeterministic => Inner.bDeterministic;
public bool bUseVFS => Inner.bUseVFS;
public bool bChainPCHs => Inner.bChainPCHs;
public bool bForceIncludePCHHeadersForGenCppFilesWhenPCHIsDisabled => Inner.bForceIncludePCHHeadersForGenCppFilesWhenPCHIsDisabled;
public bool bPreprocessOnly => Inner.bPreprocessOnly;
public bool bPreprocessDepends => Inner.bPreprocessDepends;
public bool bWithAssembly => Inner.bWithAssembly;
public bool bAllowUbaCompression => Inner.bAllowUbaCompression;
public StaticAnalyzer StaticAnalyzer => Inner.StaticAnalyzer;
public StaticAnalyzerOutputType StaticAnalyzerOutputType => Inner.StaticAnalyzerOutputType;
public StaticAnalyzerMode StaticAnalyzerMode => Inner.StaticAnalyzerMode;
public int StaticAnalyzerPVSPrintLevel => Inner.StaticAnalyzerPVSPrintLevel;
public bool bStaticAnalyzerProjectOnly => Inner.bStaticAnalyzerProjectOnly;
public bool bStaticAnalyzerIncludeGenerated => Inner.bStaticAnalyzerIncludeGenerated;
public int MinFilesUsingPrecompiledHeader => Inner.MinFilesUsingPrecompiledHeader;
public bool bForcePrecompiledHeaderForGameModules => Inner.bForcePrecompiledHeaderForGameModules;
public bool bUseIncrementalLinking => Inner.bUseIncrementalLinking;
public bool bAllowLTCG => Inner.bAllowLTCG;
public bool bPreferThinLTO => Inner.bPreferThinLTO;
public bool bCompressDebugFile => Inner.bCompressDebugFile;
public bool bPGOProfile => Inner.bPGOProfile;
public bool bPGOOptimize => Inner.bPGOOptimize;
public bool bSupportEditAndContinue => Inner.bSupportEditAndContinue;
public bool bCodeCoverage => Inner.bCodeCoverage;
public bool bOmitFramePointers => Inner.bOmitFramePointers;
public bool bEnableCppModules => Inner.bEnableCppModules;
public bool bEnableCppCoroutinesForEvaluation => Inner.bEnableCppCoroutinesForEvaluation;
public bool bEnableProcessPriorityControl => Inner.bEnableProcessPriorityControl;
[Obsolete("Deprecated in UE5.3 - No longer used as MallocProfiler is removed in favor of UnrealInsights.")]
public bool bUseMallocProfiler => Inner.bUseMallocProfiler;
public bool bShaderCompilerWorkerTrace => Inner.bShaderCompilerWorkerTrace;
public bool bUseSharedPCHs => Inner.bUseSharedPCHs;
public bool bUseShippingPhysXLibraries => Inner.bUseShippingPhysXLibraries;
public bool bUseCheckedPhysXLibraries => Inner.bUseCheckedPhysXLibraries;
public bool bCheckLicenseViolations => Inner.bCheckLicenseViolations;
public bool bBreakBuildOnLicenseViolation => Inner.bBreakBuildOnLicenseViolation;
public bool? bUseFastPDBLinking => Inner.bUseFastPDBLinking;
public bool bCreateMapFile => Inner.bCreateMapFile;
public bool bAllowRuntimeSymbolFiles => Inner.bAllowRuntimeSymbolFiles;
public string? PackagePath => Inner.PackagePath;
public string? CrashDiagnosticDirectory => Inner.CrashDiagnosticDirectory;
public string? ThinLTOCacheDirectory => Inner.ThinLTOCacheDirectory;
public string? ThinLTOCachePruningArguments => Inner.ThinLTOCachePruningArguments;
public string? BundleVersion => Inner.BundleVersion;
public bool bDeployAfterCompile => Inner.bDeployAfterCompile;
public bool bAllowRemotelyCompiledPCHs => Inner.bAllowRemotelyCompiledPCHs;
public bool bUseHeaderUnitsForPch => Inner.bUseHeaderUnitsForPch;
public bool bCheckSystemHeadersForModification => Inner.bCheckSystemHeadersForModification;
public bool bDisableLinking => Inner.bDisableLinking;
public bool bIgnoreBuildOutputs => Inner.bIgnoreBuildOutputs;
public bool bFormalBuild => Inner.bFormalBuild;
public bool bUseAdaptiveUnityBuild => Inner.bUseAdaptiveUnityBuild;
public bool bFlushBuildDirOnRemoteMac => Inner.bFlushBuildDirOnRemoteMac;
public bool bPrintToolChainTimingInfo => Inner.bPrintToolChainTimingInfo;
public bool bParseTimingInfoForTracing => Inner.bParseTimingInfoForTracing;
public bool bPublicSymbolsByDefault => Inner.bPublicSymbolsByDefault;
public string? ToolChainName => Inner.ToolChainName;
public float MSVCCompileActionWeight => Inner.MSVCCompileActionWeight;
public float ClangCompileActionWeight => Inner.ClangCompileActionWeight;
public bool bLegacyPublicIncludePaths => Inner.bLegacyPublicIncludePaths;
public bool bLegacyParentIncludePaths => Inner.bLegacyParentIncludePaths;
public bool bDisableEngineDeprecations => Inner.bDisableEngineDeprecations;
public CppStandardVersion CppStandardEngine => Inner.CppStandardEngine;
public CppStandardVersion CppStandard => Inner.CppStandard;
public CStandardVersion CStandard => Inner.CStandard;
public MinimumCpuArchitectureX64 MinCpuArchX64 => Inner.MinCpuArchX64;
public Arm64TargetCpuType MinArm64CpuTarget => Inner.MinArm64CpuTarget;
internal bool bNoManifestChanges => Inner.bNoManifestChanges;
public string? BuildVersion => Inner.BuildVersion;
public TargetLinkType LinkType => Inner.LinkType;
public bool bStripExports => Inner.bStripExports;
public bool bMergeModules => Inner.bMergeModules;
public IReadOnlyList<string> MergePlugins => Inner.MergePlugins;
public IReadOnlyList<string> MergePluginsIgnored => Inner.MergePluginsIgnored;
public IReadOnlyDictionary<string, IEnumerable<string>> MergePluginsShared => Inner.MergePluginsShared.ToDictionary(k => k.Key, v => v.Value.AsEnumerable());
public IReadOnlyList<string> MergePluginsLaunch => Inner.MergePluginsLaunch;
public IReadOnlyList<string> GlobalDefinitions => Inner.GlobalDefinitions.AsReadOnly();
public IReadOnlyList<string> ProjectDefinitions => Inner.ProjectDefinitions.AsReadOnly();
public string? LaunchModuleName => Inner.LaunchModuleName;
public string? ExportPublicHeader => Inner.ExportPublicHeader;
public IReadOnlyList<string> ExtraModuleNames => Inner.ExtraModuleNames.AsReadOnly();
public IReadOnlyList<FileReference> ManifestFileNames => Inner.ManifestFileNames.AsReadOnly();
public IReadOnlyList<FileReference> DependencyListFileNames => Inner.DependencyListFileNames.AsReadOnly();
public TargetBuildEnvironment BuildEnvironment => Inner.BuildEnvironment;
public bool bOverrideBuildEnvironment => Inner.bOverrideBuildEnvironment;
public IReadOnlyList<TargetInfo> PreBuildTargets => Inner.PreBuildTargets;
public IReadOnlyList<string> PreBuildSteps => Inner.PreBuildSteps;
public IReadOnlyList<string> PostBuildSteps => Inner.PostBuildSteps;
public IReadOnlyList<string> AdditionalBuildProducts => Inner.AdditionalBuildProducts;
public string? AdditionalCompilerArguments => Inner.AdditionalCompilerArguments;
public string? AdditionalLinkerArguments => Inner.AdditionalLinkerArguments;
public double MemoryPerActionGB => Inner.MemoryPerActionGB;
public string? GeneratedProjectName => Inner.GeneratedProjectName;
public ReadOnlyAndroidTargetRules AndroidPlatform { get; init; }
public ReadOnlyLinuxTargetRules LinuxPlatform { get; init; }
public ReadOnlyIOSTargetRules IOSPlatform { get; init; }
public ReadOnlyMacTargetRules MacPlatform { get; init; }
public ReadOnlyWindowsTargetRules WindowsPlatform { get; init; }
public bool bShouldCompileAsDLL => Inner.bShouldCompileAsDLL;
public bool bGenerateProjectFiles => Inner.bGenerateProjectFiles;
public bool bIsEngineInstalled => Inner.bIsEngineInstalled;
public IReadOnlyList<string>? DisableUnityBuildForModules => Inner.DisableUnityBuildForModules;
public IReadOnlyList<string>? EnableOptimizeCodeForModules => Inner.EnableOptimizeCodeForModules;
public IReadOnlyList<string>? DisableOptimizeCodeForModules => Inner.DisableOptimizeCodeForModules;
public IReadOnlyList<string>? OptimizeForSizeModules => Inner.OptimizeForSizeModules;
public IReadOnlyList<string>? OptimizeForSizeAndSpeedModules => Inner.OptimizeForSizeAndSpeedModules;
public IReadOnlyList<UnrealTargetPlatform>? OptedInModulePlatforms => Inner.OptedInModulePlatforms;
public TestTargetRules? InnerTestTargetRules => Inner as TestTargetRules;
#pragma warning restore C1591
#endregion
/// <summary>
/// Provide access to the RelativeEnginePath property for code referencing ModuleRules.BuildConfiguration.
/// </summary>
public string RelativeEnginePath => Unreal.EngineDirectory.MakeRelativeTo(DirectoryReference.GetCurrentDirectory()) + Path.DirectorySeparatorChar;
/// <summary>
/// Provide access to the UEThirdPartySourceDirectory property for code referencing ModuleRules.UEBuildConfiguration.
/// </summary>
public string UEThirdPartySourceDirectory => "ThirdParty/";
/// <summary>
/// Provide access to the UEThirdPartyBinariesDirectory property for code referencing ModuleRules.UEBuildConfiguration.
/// </summary>
public string UEThirdPartyBinariesDirectory => "../Binaries/ThirdParty/";
/// <summary>
/// Whether this is a low level tests target.
/// </summary>
public bool IsTestTarget => Inner.IsTestTarget;
/// <summary>
/// Whether this is a test target explicitly defined.
/// Explicitley defined test targets always inherit from TestTargetRules and define their own tests.
/// Implicit test targets are created from existing targets when building with -Mode=Test and they include tests from all dependencies.
/// </summary>
public bool ExplicitTestsTarget => Inner.ExplicitTestsTarget;
/// <summary>
/// Controls the value of WITH_LOW_LEVEL_TESTS that dictates whether module-specific low level tests are compiled in or not.
/// </summary>
public bool WithLowLevelTests => Inner.WithLowLevelTests;
/// <summary>
/// Get the platforms this target supports
/// </summary>
public IEnumerable<UnrealTargetPlatform> SupportedPlatforms => Inner.GetSupportedPlatforms();
/// <summary>
/// Get the configurations this target supports
/// </summary>
public IEnumerable<UnrealTargetConfiguration> SupportedConfigurations => Inner.GetSupportedConfigurations();
/// <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) => 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) => Inner.OptedInModulePlatforms == null || Inner.OptedInModulePlatforms.Contains(platform);
/// <summary>
/// Checks if a plugin should be programmatically allowed in the build
/// </summary>
/// <returns>true if the plugin is allowed</returns>
public bool ShouldIgnorePluginDependency(PluginInfo parentInfo, PluginReferenceDescriptor childDescriptor) => Inner.ShouldIgnorePluginDependency(parentInfo, childDescriptor);
/// <summary>
/// Determines if the automation tests should be compiled based on the current configuration and optional forced settings.
/// If either the development tests or performance tests are compiled (unless explicitly disabled), this property returns true.
/// </summary>
private bool? _bWithAutomationTestsPrivate = null;
public bool WithAutomationTests
{
get
{
if (!_bWithAutomationTestsPrivate.HasValue)
{
bool bCompileDevTests = (Configuration != UnrealTargetConfiguration.Test && Configuration != UnrealTargetConfiguration.Shipping);
bool bCompilePerfTests = bCompileDevTests;
if (bForceCompileDevelopmentAutomationTests)
{
bCompileDevTests = true;
}
if (bForceCompilePerformanceAutomationTests)
{
bCompilePerfTests = true;
}
if (bForceDisableAutomationTests)
{
bCompileDevTests = bCompilePerfTests = false;
}
_bWithAutomationTestsPrivate = bCompileDevTests || bCompilePerfTests;
}
return _bWithAutomationTestsPrivate.Value;
}
}
public StaticAllocatorType StaticAllocator => Inner.StaticAllocator;
}
}