Files
UnrealEngineUWP/Engine/Source/Programs/UnrealBuildTool/Configuration/TargetRules.cs
Ben Marsh 75fa4e9e6d Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3386108)
#rb none
#lockdown Nick.Penwarden

==========================
MAJOR FEATURES + CHANGES
==========================

Change 3345860 on 2017/03/14 by Daniel.Lamb

	Fixed crash when building DLC

	#test Cook paragon.

Change 3347324 on 2017/03/15 by Gil.Gribb

	UE4 - Removed old code relating to FAsyncArchive, FAsyncIOSubsystemBase and package level compression. The editor now uses the lowest levels on the new async IO scheme.

Change 3347331 on 2017/03/15 by Robert.Manuszewski

	Fix for a crash caused by GC killing BP class (due to no strong references) but its CDO is being kept alive because it was in the same cluster as the class and was not marked as pending kill.

	#jira UE-42732

Change 3347371 on 2017/03/15 by Graeme.Thornton

	Fix for runtime asset cache not invalidating files with an outdated version number

Change 3349161 on 2017/03/16 by Steve.Robb

	Generated UFUNCTION FNames no longer exported.
	Misc refactors of code generation.

Change 3349167 on 2017/03/16 by Steve.Robb

	Unused TBoolConstant removed (the more general TIntegralConstant should be used instead).

Change 3349274 on 2017/03/16 by Gil.Gribb

	UE4 - Fix loading a package that is already loaded.

Change 3349534 on 2017/03/16 by Ben.Marsh

	UBT: Check that the SN-DBS service is running before attempting to use it.

Change 3349612 on 2017/03/16 by Gil.Gribb

	UE4 - Increased estimate of summary size.

Change 3350021 on 2017/03/16 by Gil.Gribb

	UE4 - Fixed crash in signature checks when mounting pak files.

Change 3350052 on 2017/03/16 by Ben.Marsh

	Remove invalid characters from macro names before passing as macro values. Prevents compile errors for projects which have apostrophes in the name.

Change 3350360 on 2017/03/16 by Ben.Marsh

	UAT: Fix non-threadsafe access of ExeToTimeInMs when spawning external processes.

Change 3351670 on 2017/03/17 by Ben.Marsh

	UBT: Ignore all default libraries when creating import libs. Sometimes #pragma comment(lib, ...) directives can add force additional libraries onto the linker/librarian command line. We don't want or need these included when generating import libraries, but they can cause errors due to search paths not being able to find them.

Change 3352289 on 2017/03/17 by Ben.Marsh

	Fix issues working with > 2GB archives caused by truncation of the return value from FArchive::Tell() down to 32-bits.

Change 3352390 on 2017/03/17 by Ben.Marsh

	Remove unused/out of date binaries for CrashReporter.

Change 3352392 on 2017/03/17 by Ben.Marsh

	Remove UnrealDocTool binaries. This is distributed through a Visual Studio plugin now.

Change 3352410 on 2017/03/17 by Ben.Marsh

	Remove P4ChangeReporter. I don't believe this is used any more.

Change 3352450 on 2017/03/17 by Ben.Marsh

	Disable including CrashReporter by default when packaging projects. This is only useful with a CrashReporter backend set up, which only usually applies to Epic internal projects.

Change 3352455 on 2017/03/17 by Ben.Marsh

	Remove RegisterPII and TranslatedWordsCountEstimator executables. Don't believe these are used any more.

Change 3352940 on 2017/03/17 by Wes.Hunt

	Update CRP to not send Slack queue size updates unless the waiting time is greater  than 1 minute.
	#codereview: jin.zhang

Change 3353658 on 2017/03/20 by Steve.Robb

	Fix for crash when importing a BP which has a populated TMap with an enum class key.

Change 3354056 on 2017/03/20 by Steve.Robb

	TAssetPtr<T> can now be constructed from a nullptr without a full definition of T.

Change 3356111 on 2017/03/21 by Graeme.Thornton

	Fix for UE-34131
	 - Support double and fname stat types in UFE stat export to CSV

	#jira UE-34131

Change 3358584 on 2017/03/22 by Daniel.Lamb

	Fixed the garbage collection keep flags when cleaning the sandbox for iterative cooking.

	#test Cook shootergame

Change 3360379 on 2017/03/23 by Gil.Gribb

	UE4 - Avoid adding a linker annotation if it actually hasn't changed. Improves ConditionalBeginDestroy performance.

Change 3360623 on 2017/03/23 by Gil.Gribb

	UE4 - Change from MarcA to avoid a redudnant removal of PrimitiveComponent from the streaming managers during ConditionalBeginDestroy.

Change 3360627 on 2017/03/23 by Gil.Gribb

	UE4 - Optimized UObject hash tables for speed and space.

Change 3361183 on 2017/03/23 by Gil.Gribb

	UE4 - Fixed change to NotifyPrimitiveDetached so that it works in the editor.

Change 3361906 on 2017/03/23 by Steve.Robb

	Fix for a bad hint index when instantiating map property subobjects when the defaults has fewer but non-zero elements.

	#jira UE-43272

Change 3362839 on 2017/03/24 by Gil.Gribb

	UE4 - Fixed hash table lock optimization.

Change 3367348 on 2017/03/28 by Robert.Manuszewski

	Making sure streamed-in SoundWaves get added to GC clusters.

Change 3367386 on 2017/03/28 by Ben.Marsh

	EC: Pass the Semaphores property from a build type as a parameter to new build jobs.

Change 3367422 on 2017/03/28 by Ben.Marsh

	EC: Allow limiting the number of scheduled jobs that will be automatically run at a particular time. Each build type can have a 'Semaphores' property in the branch settings file, which will be copied to newly created jobs. Before scheduling new jobs, EC is queried for the 'Semaphores' property on any running jobs, and build types with existing semaphores will be skipped. Does not prevent jobs from being run manually.

Change 3367469 on 2017/03/28 by Ben.Marsh

	EC: Prevent multiple incremental jobs running at once.

Change 3367640 on 2017/03/28 by Ben.Marsh

	Plugins: Add an optional EngineVersion field back into the plugin descriptor. If set, the engine will warn if the plugin is not compatible with the current engine version. Plugins will set this field by default when packaging; pass -Unversioned to override.

Change 3367836 on 2017/03/28 by Uriel.Doyon

	Improved handled of references in the streaming manager

Change 3369354 on 2017/03/29 by Graeme.Thornton

	Added AES encrypt/decrypt functions that take a byte array for the key

Change 3369804 on 2017/03/29 by Ben.Marsh

	Remove incorrect "EngineVersion" settings from plugin descriptors.

Change 3370462 on 2017/03/29 by Ben.Marsh

	Editor: Install Visual Studio 2017 by default, instead of Visual Studio 2015. Changed to use ExecElevatedProcess() to prevent installer failing to run if the current user is not already an administrator.

	#jira UE-43467

Change 3371598 on 2017/03/30 by Ben.Marsh

	UBT: Fix message for missing toolchain in VS2017.

Change 3372827 on 2017/03/30 by Ben.Marsh

	BuildGraph: Output an error at the end of each step if any previous build products have been modified.

Change 3372947 on 2017/03/30 by Ben.Marsh

	[Merge] Always add the host editor platform as supported in an installed build. Not doing so prevents the build platform being registered in UBT, which prevents doing any platform-specific staging operations in UAT.

Change 3372958 on 2017/03/30 by Ben.Marsh

	[Merge] Simplify log output for cooks. Suppress additional timestamps from the editor when running through UAT.

Change 3372981 on 2017/03/30 by Ben.Marsh

	[Merge] Modular game fixes for UAT

	* Store list of executable names from the receipts instead of generating them from Target/Platform/Config/Architecture combination
	* Get full list of staged executables from receipts instead of assuming only non-code projects are in Engine
	* Always pass short project name as Bootstrap argument, so that modular game exe knows which project to start

Change 3373024 on 2017/03/30 by Ben.Marsh

	[Merge] Add an option to UAT (-CookOutputDir=...) and the cooker (-OutputDir=...) which allows overriding the output directory for cooked files, and fix situations where the directory becomes too deep.

Change 3373041 on 2017/03/30 by Ben.Marsh

	[Merge] Added UAT script to replace assets with another source
	Renamed ReplaceAssetsCommandlet to GenerateAssetsManifest as it now outputs a list of files and has nothing specific about replacing files

Change 3373052 on 2017/03/30 by Ben.Marsh

	[Merge] Changed CopyUsingDistillFileSet command so that it can use a pre-existing manifest file instead of running commandlet

Change 3373092 on 2017/03/30 by Ben.Marsh

	[Merge] Fixed crash attempting to load cooked static mesh in editor

Change 3373112 on 2017/03/30 by Ben.Marsh

	[Merge] Fixed crash caused by loading cooked StaticMesh in editor that didn't have any SourceModels

Change 3373132 on 2017/03/30 by Ben.Marsh

	[Merge] Added Additional Maps that are always cooked to the GenerateDistillFileSetsCommandlet

Change 3373138 on 2017/03/30 by Ben.Marsh

	[Merge] Fixed code issue with playback of cooked SoundCues
	Skip over code using editor only data when editor data has been stripped

Change 3373143 on 2017/03/30 by Ben.Marsh

	[Merge] Fixed crash when attempting to open multiple cooked assets

Change 3373156 on 2017/03/30 by Ben.Marsh

	[Merge] Added commandlet to replace game assets with those from another source (intended for cooked asset replacement)

Change 3373161 on 2017/03/30 by Ben.Marsh

	[Merge] Prevented crash by not attempting to Load Mips again if a package has cooked data

Change 3373168 on 2017/03/30 by Ben.Marsh

	[Merge] Fix output path for DLC pak file, so it can be discovered by the engine and automatically mounted (and to stop it colliding with the main game pak file).

Change 3373204 on 2017/03/30 by Ben.Marsh

	[Merge] Fix crash when switching levels in PIE, due to bulk data already having been discarded for cooked assets. Cooking sets BULKDATA_SingleUse for textures, but PIEing needs to keep bulk data around.

Change 3373209 on 2017/03/30 by Ben.Marsh

	[Merge] Fix missing material in mod editor for cooked assets.

Change 3373388 on 2017/03/30 by Ben.Marsh

	[Merge] Various improvements to the plugin browser and new plugin wizard from Robo Recall.

Change 3374200 on 2017/03/31 by Ben.Marsh

	[Merge] Latest OdinEditor plugin from //Odin/Main, to fix build failures. Re-made change to OdinUnrealEdEngine to remove dependencies on analytics.

Change 3374279 on 2017/03/31 by Ben.Marsh

	PR #3441: Invalid JSON in FeaturePacks (Contributed by projectgheist)

Change 3374331 on 2017/03/31 by Ben.Marsh

	UBT: Disable warning pragmas on Mono; not supported on current compiler.

	#jira UE-43451

Change 3375108 on 2017/03/31 by Ben.Marsh

	Removing another plugin EngineVersion property.

Change 3375126 on 2017/03/31 by Ben.Marsh

	Fix incorrect executable paths being generated for Windows.

Change 3375159 on 2017/03/31 by Graeme.Thornton

	Pak Index Encryption
	 - Added "-encryptindex" option to unrealpak which will encrypt the pak index, making the pak file unreadable without the associated decryption key
	 - Added "-encryptpakindex" option to UAT to force on index encryption
	 - Added "bEncryptPakIndex" setting to project packaging settings so pak encryption can be controlled via the editor

Change 3375197 on 2017/03/31 by Graeme.Thornton

	Enable pak index encryption in shootergame

Change 3375377 on 2017/03/31 by Ben.Marsh

	Add build node to submit updated UnrealPak binaries for Win64, Mac and Linux. Currently has to be run via a custom build on EC, with the target set to "Submit UnrealPak Binaries".

Change 3376418 on 2017/04/03 by Ben.Marsh

	BuildGraph: Always clear the cached node state when running locally without having to manually specify the -ClearHistory argument. The -Resume argument allows the previous behavior of continuing a previous build.

Change 3376447 on 2017/04/03 by Ben.Marsh

	Build: Remove some unused stream settings

Change 3376469 on 2017/04/03 by Ben.Marsh

	Build: Add a customizable field for the script to use for custom builds in every branch.

Change 3376654 on 2017/04/03 by Ben.Marsh

	Add a fatal error message containing the module with an outstanding reference when trying to unload it.

	#jira UE-42423

Change 3376747 on 2017/04/03 by Gil.Gribb

	UE4 - Fixed crash relating to FGenericAsyncReadFileHandle when not using the EDL.

Change 3377173 on 2017/04/03 by Ben.Marsh

	Make sure callstacks are written to stdout following a crash on a background thread.

Change 3377183 on 2017/04/03 by Ben.Marsh

	Removing support for building VS2013 targets. Ability to generate VS2013 project files is still allowed, but unsupported (via the -2013unsupported command line argument).

Change 3377280 on 2017/04/03 by Ben.Marsh

	Build: Post UGS badges for all UE4 development streams, with the project set to $(Branch)/...

Change 3377311 on 2017/04/03 by Ben.Marsh

	Build: Set the 'Semaphores' parameter for any jobs started from a schedule.

Change 3377326 on 2017/04/03 by Ben.Marsh

	UGS: Show badges which match an entire subtree if the project field ends with "...".

Change 3377392 on 2017/04/03 by Ben.Marsh

	Add badges to UE4/Main and UE4/Release streams, and change the names of the builds in development streams to distinguish them.

Change 3377895 on 2017/04/03 by Ben.Marsh

	EC: Send notification emails whenever UAT fails to compile.

Change 3377923 on 2017/04/03 by Ben.Marsh

	Build: Use a different semaphore for the common editors build target to the incremental compile build target.

Change 3378297 on 2017/04/04 by Graeme.Thornton

	Fix incorrect generation of UE_ENGINE_DIRECTORY in UBT

Change 3378301 on 2017/04/04 by Ben.Marsh

	UBT: Try enabling bAdaptiveUnityDisablesPCH by default, to reduce the number of build failures we see due to missing includes.

Change 3378460 on 2017/04/04 by Graeme.Thornton

	Remove dependency preloading system from sync and async loading paths

Change 3378535 on 2017/04/04 by Robert.Manuszewski

	Fix for audio crash when launching Ocean PIE after removing the audio chunk allocation in CL #3347324

	#jira UE-43544

Change 3378575 on 2017/04/04 by Robert.Manuszewski

	Making sure actor clusters are not created in non-cooked builds

	#jira UE-43617
	#jira UE-43614

Change 3378589 on 2017/04/04 by Robert.Manuszewski

	Disabling debug GC cluster logging

	#jira UE-43617

Change 3379118 on 2017/04/04 by Robert.Manuszewski

	Disabling actor clustering by default, keeping it on in Orion and Ocean

Change 3379815 on 2017/04/04 by Ben.Marsh

	Revert change to derive executable names from target receipts. While a better solution than making them up, Android relies on having the base executable names for supporting multiple architectures.

Change 3380811 on 2017/04/05 by Gil.Gribb

	UE4 - Put the special boot order things into baseengine.ini so that licensees and games can add to it.

Change 3383313 on 2017/04/06 by Uriel.Doyon

	Integrated CL 3372436 3372765 3373272 from Dev-Rendering
	#JIRA UE-43669

Change 3383531 on 2017/04/06 by Ben.Marsh

	UGS: Ignore failures when querying whether paths exist. Permissions can cause this folder to fail, even if it will succeed at a parent directory.

Change 3383786 on 2017/04/06 by Ben.Zeigler

	Back out changelist 3382694 and replace with CL #3383757 from bob.tellez:
	Fix memory stomping issue caused by removing a FFortProfileSynchronizeRequest from SynchronizeRequests in UFortRegisteredPlayerInfo::UpdateSynchronizeRequest before SynchronizeProfile had finished executing

Change 3385089 on 2017/04/07 by Gil.Gribb

	UE4 - Critical. Fixed memory leak in pak precacher.

[CL 3386123 by Ben Marsh in Main branch]
2017-04-10 11:00:33 -04:00

2043 lines
61 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 (UE4Game.exe or RocketGame.exe)
/// </summary>
Game,
/// <summary>
/// Uncooked modular editor executable and DLLs (UE4Editor.exe, UE4Editor*.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>
/// Use the default build environment for this target type (and whether the engine is installed)
/// </summary>
Default,
/// <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>
/// TargetRules is a data structure that contains the rules for defining a target (application/executable)
/// </summary>
public abstract 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>
/// Dummy class to maintain support for the SetupGlobalEnvironment() callback. We don't expose these classes directly any more.
/// </summary>
public class LinkEnvironmentConfiguration
{
/// <summary>
/// TargetRules instance to forward settings to.
/// </summary>
TargetRules Inner;
/// <summary>
/// Constructor.
/// </summary>
/// <param name="Inner">The target rules object. Fields on this object are treated as aliases to fields on this rules object.</param>
public LinkEnvironmentConfiguration(TargetRules Inner)
{
this.Inner = Inner;
}
/// <summary>
/// Settings exposed from the TargetRules instance
/// </summary>
#region Forwarded fields
#if !__MonoCS__
#pragma warning disable CS1591
#endif
public bool bHasExports
{
get { return Inner.bHasExports; }
set { Inner.bHasExports = value; }
}
public bool bIsBuildingConsoleApplication
{
get { return Inner.bIsBuildingConsoleApplication; }
set { Inner.bIsBuildingConsoleApplication = value; }
}
public bool bDisableSymbolCache
{
get { return Inner.bDisableSymbolCache; }
set { Inner.bDisableSymbolCache = value; }
}
#if !__MonoCS__
#pragma warning restore CS1591
#endif
#endregion
}
/// <summary>
/// Dummy class to maintain support for the SetupGlobalEnvironment() callback. We don't expose these classes directly any more.
/// </summary>
public class CPPEnvironmentConfiguration
{
/// <summary>
/// TargetRules instance to forward settings to.
/// </summary>
TargetRules Inner;
/// <summary>
/// Constructor.
/// </summary>
/// <param name="Inner">The target rules object. Fields on this object are treated as aliases to fields on this rules object.</param>
public CPPEnvironmentConfiguration(TargetRules Inner)
{
this.Inner = Inner;
}
/// <summary>
/// Settings exposed from the TargetRules instance
/// </summary>
#region Forwarded fields
#if !__MonoCS__
#pragma warning disable CS1591
#endif
public List<string> Definitions
{
get { return Inner.GlobalDefinitions; }
}
public bool bEnableOSX109Support
{
get { return Inner.bEnableOSX109Support; }
set { Inner.bEnableOSX109Support = value; }
}
#if !__MonoCS__
#pragma warning restore CS1591
#endif
#endregion
}
/// <summary>
/// The name of this target.
/// </summary>
public readonly string Name;
/// <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 type of target.
/// </summary>
public global::UnrealBuildTool.TargetType Type = global::UnrealBuildTool.TargetType.Game;
/// <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>
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>
[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>
public bool bOutputPubliclyDistributable = false;
/// <summary>
/// Specifies the configuration whose binaries do not require a "-Platform-Configuration" suffix.
/// </summary>
public UnrealTargetConfiguration UndecoratedConfiguration = UnrealTargetConfiguration.Development;
/// <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 UE4Editor target but running it with a game that enables a plugin.
/// </summary>
public bool bBuildAllPlugins = 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>
/// 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>
/// Output the executable to the engine binaries folder.
/// </summary>
public bool bOutputToEngineBinaries = false;
/// <summary>
/// Whether this target should be compiled as a DLL. Requires LinkType to be set to TargetLinkType.Monolithic.
/// </summary>
public bool bShouldCompileAsDLL = false;
/// <summary>
/// Subfolder to place executables in, relative to the default location.
/// </summary>
public string ExeBinariesSubFolder = String.Empty;
/// <summary>
/// Allow target module to override UHT code generation version.
/// </summary>
public EGeneratedCodeVersion GeneratedCodeVersion = EGeneratedCodeVersion.None;
/// <summary>
/// Whether to include PhysX support.
/// </summary>
public bool bCompilePhysX = true;
/// <summary>
/// Whether to include PhysX APEX support.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileApex")]
public bool bCompileAPEX = true;
/// <summary>
/// Whether to include NvCloth.
/// </summary>
public bool bCompileNvCloth = false;
/// <summary>
/// Whether to allow runtime cooking of physics.
/// </summary>
public bool bRuntimePhysicsCooking = true;
/// <summary>
/// Whether to include Box2D support.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileBox2D")]
public bool bCompileBox2D = true;
/// <summary>
/// Whether to include ICU unicode/i18n support in Core.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileICU")]
public bool bCompileICU = true;
/// <summary>
/// Whether to compile CEF3 support.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileCEF3")]
public bool bCompileCEF3 = 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>
[CommandLine("-NoEditor", Value = "false")]
public bool bBuildEditor = true;
/// <summary>
/// Whether to compile code related to building assets. Consoles generally cannot build assets. Desktop platforms generally can.
/// </summary>
public bool bBuildRequiresCookedData = false;
/// <summary>
/// Whether to compile WITH_EDITORONLY_DATA disabled. Only Windows will use this, other platforms force this to false.
/// </summary>
[CommandLine("-NoEditorOnlyData", Value = "false")]
public bool bBuildWithEditorOnlyData = true;
/// <summary>
/// Whether to compile the developer tools.
/// </summary>
public bool bBuildDeveloperTools = true;
/// <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 in support for Simplygon or not.
/// </summary>
[CommandLine("-WithSimplygon")]
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileSimplygon")]
public bool bCompileSimplygon = true;
/// <summary>
/// Whether we should compile in support for Simplygon's SSF library or not.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileSimplygonSSF")]
public bool bCompileSimplygonSSF = true;
/// <summary>
/// Whether to compile lean and mean version of UE.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileLeanAndMeanUE")]
public bool bCompileLeanAndMeanUE = false;
/// <summary>
/// Enabled for all builds that include the engine project. Disabled only when building standalone apps that only link with Core.
/// </summary>
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>
public bool bCompileAgainstCoreUObject = true;
/// <summary>
/// If true, include ADO database support in core.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bIncludeADO")]
public bool bIncludeADO;
/// <summary>
/// Whether to compile Recast navmesh generation.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileRecast")]
public bool bCompileRecast = true;
/// <summary>
/// Whether to compile SpeedTree support.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileSpeedTree")]
public bool bCompileSpeedTree = true;
/// <summary>
/// Enable exceptions for all modules.
/// </summary>
public bool bForceEnableExceptions = false;
/// <summary>
/// Enable RTTI for all modules.
/// </summary>
public bool bForceEnableRTTI = false;
/// <summary>
/// Compile server-only code.
/// </summary>
public bool bWithServerCode = true;
/// <summary>
/// Whether to include stats support even without the engine.
/// </summary>
public bool bCompileWithStatsWithoutEngine = false;
/// <summary>
/// Whether to include plugin support.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileWithPluginSupport")]
public bool bCompileWithPluginSupport = false;
/// <summary>
/// Whether to include PerfCounters support.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bWithPerfCounters")]
public bool bWithPerfCounters = false;
/// <summary>
/// Whether to turn on logging for test/shipping builds.
/// </summary>
public bool bUseLoggingInShipping = false;
/// <summary>
/// Whether to turn on logging to memory for test/shipping builds.
/// </summary>
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>
public bool bUseChecksInShipping = false;
/// <summary>
/// True if we need FreeType support.
/// </summary>
[ConfigFile(ConfigHierarchyType.Engine, "/Script/BuildSettings.BuildSettings", "bCompileFreeType")]
public bool bCompileFreeType = true;
/// <summary>
/// True if we want to favor optimizing size over speed.
/// </summary>
[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>
/// 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>
public bool bEventDrivenLoader;
/// <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 = true;
/// <summary>
/// Make static libraries for all engine modules as intermediates for this target.
/// </summary>
[CommandLine("-Precompile")]
public bool bPrecompile = false;
/// <summary>
/// Use existing static libraries for all engine modules in this target.
/// </summary>
[CommandLine("-UsePrecompiled")]
public bool bUsePrecompiled = 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>
/// 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>
[CommandLine("-DisableUnity", Value = "false")]
[XmlConfigFile(Category = "BuildConfiguration")]
public bool bUseUnityBuild = true;
/// <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>
[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 = true;
/// <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>
/// Forces shadow variable warnings to be treated as errors on platforms that support it.
/// </summary>
[CommandLine("-ShadowVariableErrors")]
[XmlConfigFile(Category = "BuildConfiguration")]
public bool bShadowVariableErrors = false;
/// <summary>
/// Forces the use of undefined identifiers in conditional expressions to be treated as errors.
/// </summary>
[XmlConfigFile(Category = "BuildConfiguration")]
public bool bUndefinedIdentifierErrors = false;
/// <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 = true;
/// <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>
/// 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>
[XmlConfigFile(Category = "BuildConfiguration")]
public bool bUseIncrementalLinking = false;
/// <summary>
/// Whether to allow the use of link time code generation (LTCG).
/// </summary>
[CommandLine("-NoLTCG", Value = "false")]
[XmlConfigFile(Category = "BuildConfiguration")]
public bool bAllowLTCG = false;
/// <summary>
/// Whether to allow the use of ASLR (address space layout randomization) if supported. Only
/// applies to shipping builds.
/// </summary>
[XmlConfigFile(Category = "BuildConfiguration")]
public bool bAllowASLRInShipping = true;
/// <summary>
/// Whether to support edit and continue. Only works on Microsoft compilers in 32-bit compiles.
/// </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 strip iOS symbols or not (implied by bGeneratedSYMFile).
/// </summary>
[XmlConfigFile(Category = "BuildConfiguration")]
public bool bStripSymbolsOnIOS = false;
/// <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 = false;
/// <summary>
/// Outputs a map file as part of the build.
/// </summary>
[CommandLine("-MapFile")]
[XmlConfigFile(Category = "BuildConfiguration")]
public bool bCreateMapFile = false;
/// <summary>
/// Enables code analysis mode. Currently, this has specific requirements. It only works on Windows
/// platform with the MSVC compiler. Also, it requires a version of the compiler that supports the
/// /analyze option, such as Visual Studio 2013.
/// </summary>
[CommandLine("-EnableCodeAnalysis")]
[XmlConfigFile(Category = "BuildConfiguration")]
public bool bEnableCodeAnalysis = false;
/// <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>
/// If true, then a stub IPA will be generated when compiling is done (minimal files needed for a valid IPA).
/// </summary>
[CommandLine("-NoCreateStub", Value = "false")]
public bool bCreateStubIPA = true;
/// <summary>
/// If true, then a stub IPA will be generated when compiling is done (minimal files needed for a valid IPA).
/// </summary>
[CommandLine("-CopyAppBundleBackToDevice")]
public bool bCopyAppBundleBackToDevice = 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>
/// The directory to put precompiled header files in. Experimental setting to allow using a path on a faster drive. Defaults to the standard output directory if not set.
/// </summary>
[XmlConfigFile(Category = "BuildConfiguration")]
public string PCHOutputDirectory = null;
/// <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>
[CommandLine("-Monolithic", Value ="Monolithic")]
[CommandLine("-Modular", Value ="Modular")]
TargetLinkType LinkTypePrivate = TargetLinkType.Default;
/// <summary>
/// Macros to define globally across the whole target.
/// </summary>
[CommandLine("-Define", ValueAfterSpace = true)]
public List<string> GlobalDefinitions = 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>
/// List of additional modules to be compiled into the target.
/// </summary>
public List<string> ExtraModuleNames = new List<string>();
/// <summary>
/// Specifies the build environment for this target. See TargetBuildEnvironment for more infomation on the available options.
/// </summary>
public TargetBuildEnvironment BuildEnvironment = TargetBuildEnvironment.Default;
/// <summary>
/// Android-specific target settings.
/// </summary>
public AndroidTargetRules AndroidPlatform = new AndroidTargetRules();
/// <summary>
/// Mac-specific target settings.
/// </summary>
public MacTargetRules MacPlatform = new MacTargetRules();
/// <summary>
/// PS4-specific target settings.
/// </summary>
public PS4TargetRules PS4Platform = new PS4TargetRules();
/// <summary>
/// Windows-specific target settings.
/// </summary>
public WindowsTargetRules WindowsPlatform = new WindowsTargetRules();
/// <summary>
/// Xbox One-specific target settings.
/// </summary>
public XboxOneTargetRules XboxOnePlatform = new XboxOneTargetRules();
/// <summary>
/// Default constructor (deprecated; use the constructor below instead).
/// </summary>
[Obsolete("Please pass the TargetInfo parameter to the base class constructor (eg. \"MyTargetRules(TargetInfo Target) : base(Target)\").")]
public TargetRules()
{
InternalConstructor();
}
/// <summary>
/// Default constructor. Since the parameterless TargetRules constructor is still supported for now, initialization that should happen here
/// is currently done in TargetRules.CreateTargetRulesInstance() instead.
/// </summary>
/// <param name="Target">Information about the target being built</param>
public TargetRules(TargetInfo Target)
{
InternalConstructor();
}
/// <summary>
/// Initialize this object, using the readonly fields set by RulesAssembly.CreateTargetRulesInstance.
/// </summary>
private void InternalConstructor()
{
// Read settings from config files
foreach(object ConfigurableObject in GetConfigurableObjects())
{
ConfigCache.ReadSettings(DirectoryReference.FromFile(ProjectFile), Platform, ConfigurableObject);
}
// Read settings from the XML config files
XmlConfig.ApplyTo(this);
// Allow the build platform to set defaults for this target
if(Platform != UnrealTargetPlatform.Unknown)
{
UEBuildPlatform.GetBuildPlatform(Platform).ResetTarget(this);
}
// If the engine is installed, always use precompiled libraries
bUsePrecompiled = UnrealBuildTool.IsEngineInstalled();
// Check that the appropriate headers exist to enable Simplygon
if(bCompileSimplygon)
{
FileReference HeaderFile = FileReference.Combine(UnrealBuildTool.EngineDirectory, "Source", "ThirdParty", "NotForLicensees", "Simplygon", "Simplygon-latest", "Inc", "SimplygonSDK.h");
if(!FileReference.Exists(HeaderFile))
{
bCompileSimplygon = false;
}
}
if(bCompileSimplygonSSF)
{
FileReference HeaderFile = FileReference.Combine(UnrealBuildTool.EngineDirectory, "Source", "ThirdParty", "NotForLicensees", "SSF", "Public", "ssf.h");
if(!FileReference.Exists(HeaderFile))
{
bCompileSimplygonSSF = false;
}
}
// If we've got a changelist set, set that we're making a formal build
BuildVersion Version;
if (BuildVersion.TryRead(out Version))
{
bFormalBuild = (Version.Changelist != 0 && Version.IsPromotedBuild != 0);
}
if (bCreateStubIPA && (String.IsNullOrEmpty(Environment.GetEnvironmentVariable("uebp_LOCAL_ROOT")) && BuildHostPlatform.Current.Platform == UnrealTargetPlatform.Mac))
{
bCreateStubIPA = false;
}
}
/// <summary>
/// Override any settings required for the selected target type
/// </summary>
internal void SetOverridesForTargetType()
{
if(Type == global::UnrealBuildTool.TargetType.Game)
{
bCompileLeanAndMeanUE = true;
// Do not include the editor
bBuildEditor = false;
bBuildWithEditorOnlyData = false;
// Require cooked data
bBuildRequiresCookedData = true;
// Compile the engine
bCompileAgainstEngine = true;
// no exports, so no need to verify that a .lib and .exp file was emitted by the linker.
bHasExports = false;
// Tag it as a 'Game' build
GlobalDefinitions.Add("UE_GAME=1");
}
else if(Type == global::UnrealBuildTool.TargetType.Client)
{
bCompileLeanAndMeanUE = true;
// Do not include the editor
bBuildEditor = false;
bBuildWithEditorOnlyData = false;
// Require cooked data
bBuildRequiresCookedData = true;
// Compile the engine
bCompileAgainstEngine = true;
// Disable server code
bWithServerCode = false;
// no exports, so no need to verify that a .lib and .exp file was emitted by the linker.
bHasExports = false;
// Tag it as a 'Game' build
GlobalDefinitions.Add("UE_GAME=1");
}
else if(Type == global::UnrealBuildTool.TargetType.Editor)
{
bCompileLeanAndMeanUE = false;
// Do not include the editor
bBuildEditor = true;
bBuildWithEditorOnlyData = true;
// Require cooked data
bBuildRequiresCookedData = false;
// Compile the engine
bCompileAgainstEngine = true;
//enable PerfCounters
bWithPerfCounters = true;
// Tag it as a 'Editor' build
GlobalDefinitions.Add("UE_EDITOR=1");
}
else if(Type == global::UnrealBuildTool.TargetType.Server)
{
bCompileLeanAndMeanUE = true;
// Do not include the editor
bBuildEditor = false;
bBuildWithEditorOnlyData = false;
// Require cooked data
bBuildRequiresCookedData = true;
// Compile the engine
bCompileAgainstEngine = true;
//enable PerfCounters
bWithPerfCounters = true;
// no exports, so no need to verify that a .lib and .exp file was emitted by the linker.
bHasExports = false;
// Tag it as a 'Server' build
GlobalDefinitions.Add("UE_SERVER=1");
GlobalDefinitions.Add("USE_NULL_RHI=1");
}
}
/// <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;
yield return AndroidPlatform;
yield return MacPlatform;
yield return PS4Platform;
yield return WindowsPlatform;
yield return XboxOnePlatform;
}
/// <summary>
/// Replacement for TargetInfo.IsMonolithic during transition from TargetInfo to ReadOnlyTargetRules
/// </summary>
[Obsolete("IsMonolithic is deprecated in the 4.16 release. Check whether LinkType == TargetRules.TargetLinkType.Monolithic instead.")]
public bool IsMonolithic
{
get { return LinkType == TargetLinkType.Monolithic; }
}
/// <summary>
/// Accessor to return the link type for this module, including support for setting LinkType, or for overriding ShouldCompileMonolithic().
/// </summary>
/// <param name="Platform">The platform being compiled.</param>
/// <param name="Configuration">The configuration being compiled.</param>
/// <returns>Link type for the given combination</returns>
internal TargetLinkType GetLegacyLinkType(UnrealTargetPlatform Platform, UnrealTargetConfiguration Configuration)
{
#pragma warning disable 0612
if (GetType().GetMethod("ShouldCompileMonolithic").DeclaringType != typeof(TargetRules))
{
return ShouldCompileMonolithic(Platform, Configuration) ? TargetLinkType.Monolithic : TargetLinkType.Modular;
}
else
{
return LinkType;
}
#pragma warning restore 0612
}
/// <summary>
/// Can be set to override the file extension of the executable file (normally .exe or .dll on Windows, for example)
/// </summary>
public string OverrideExecutableFileExtension = String.Empty;
/// <summary>
/// Whether this target should be compiled in monolithic mode
/// </summary>
/// <param name="InPlatform">The platform being built</param>
/// <param name="InConfiguration">The configuration being built</param>
/// <returns>true if it should, false if not</returns>
[ObsoleteOverride("ShouldCompileMonolithic() is deprecated in 4.15. Please set LinkType = TargetLinkType.Monolithic or LinkType = TargetLinkType.Modular in your target's constructor instead.")]
public virtual bool ShouldCompileMonolithic(UnrealTargetPlatform InPlatform, UnrealTargetConfiguration InConfiguration)
{
return Type != global::UnrealBuildTool.TargetType.Editor;
}
/// <summary>
/// Give the target an opportunity to override toolchain settings
/// </summary>
/// <param name="Target">The target currently being setup</param>
/// <returns>true if successful, false if not</returns>
[ObsoleteOverride("ConfigureToolchain() is deprecated in the 4.16 release. Please set toolchain-specific options from the target's constructor instead.")]
public virtual bool ConfigureToolchain(TargetInfo Target)
{
return true;
}
/// <summary>
/// Get the supported platforms for this target.
/// This function is deprecated in 4.15, and a warning will be given by RulesCompiler if it is implemented by a derived class.
/// </summary>
/// <param name="OutPlatforms">The list of platforms supported</param>
/// <returns>true if successful, false if not</returns>
[ObsoleteOverride("GetSupportedPlatforms() is deprecated in the 4.15 release. Add a [SupportedPlatforms(...)] attribute to your TargetRules class instead.")]
public virtual bool GetSupportedPlatforms(ref List<UnrealTargetPlatform> OutPlatforms)
{
if (Type == global::UnrealBuildTool.TargetType.Program)
{
OutPlatforms = new List<UnrealTargetPlatform>(Utils.GetPlatformsInClass(UnrealPlatformClass.Desktop));
return true;
}
else if (Type == global::UnrealBuildTool.TargetType.Editor)
{
OutPlatforms = new List<UnrealTargetPlatform>(Utils.GetPlatformsInClass(UnrealPlatformClass.Editor));
return true;
}
else
{
OutPlatforms = new List<UnrealTargetPlatform>(Utils.GetPlatformsInClass(UnrealPlatformClass.All));
return true;
}
}
/// <summary>
/// Get the supported configurations for this target
/// </summary>
/// <param name="OutConfigurations">The list of configurations supported</param>
/// <param name="bIncludeTestAndShippingConfigs"></param>
/// <returns>true if successful, false if not</returns>
[ObsoleteOverride("GetSupportedConfigurations() is deprecated in the 4.15 release. Add a [SupportedConfigurations(...)] attribute to your TargetRules class instead.")]
public virtual bool GetSupportedConfigurations(ref List<UnrealTargetConfiguration> OutConfigurations, bool bIncludeTestAndShippingConfigs)
{
if (Type == global::UnrealBuildTool.TargetType.Program)
{
// By default, programs are Debug and Development only.
OutConfigurations.Add(UnrealTargetConfiguration.Debug);
OutConfigurations.Add(UnrealTargetConfiguration.Development);
}
else
{
// By default all games support all configurations
foreach (UnrealTargetConfiguration Config in Enum.GetValues(typeof(UnrealTargetConfiguration)))
{
if (Config != UnrealTargetConfiguration.Unknown)
{
// Some configurations just don't make sense for the editor
if (Type == global::UnrealBuildTool.TargetType.Editor &&
(Config == UnrealTargetConfiguration.Shipping || Config == UnrealTargetConfiguration.Test))
{
// We don't currently support a "shipping" editor config
}
else if (!bIncludeTestAndShippingConfigs &&
(Config == UnrealTargetConfiguration.Shipping || Config == UnrealTargetConfiguration.Test))
{
// User doesn't want 'Test' or 'Shipping' configs in their project files
}
else
{
OutConfigurations.Add(Config);
}
}
}
}
return (OutConfigurations.Count > 0) ? true : false;
}
/// <summary>
/// Setup the binaries associated with this target.
/// </summary>
/// <param name="Target">The target information - such as platform and configuration</param>
/// <param name="OutBuildBinaryConfigurations">Output list of binaries to generated</param>
/// <param name="OutExtraModuleNames">Output list of extra modules that this target could utilize</param>
[ObsoleteOverride("SetupBinaries() is deprecated in the 4.16 release. From the constructor in your .target.cs file, use ExtraModuleNames.Add(\"Foo\") to add modules to your target, or set LaunchModuleName = \"Foo\" to override the name of the launch module for program targets.")]
public virtual void SetupBinaries(
TargetInfo Target,
ref List<UEBuildBinaryConfiguration> OutBuildBinaryConfigurations,
ref List<string> OutExtraModuleNames
)
{
}
/// <summary>
/// Setup the global environment for building this target
/// IMPORTANT: Game targets will *not* have this function called if they use the shared build environment.
/// See ShouldUseSharedBuildEnvironment().
/// </summary>
/// <param name="Target">The target information - such as platform and configuration</param>
/// <param name="OutLinkEnvironmentConfiguration">Output link environment settings</param>
/// <param name="OutCPPEnvironmentConfiguration">Output compile environment settings</param>
public virtual void SetupGlobalEnvironment(
TargetInfo Target,
ref LinkEnvironmentConfiguration OutLinkEnvironmentConfiguration,
ref CPPEnvironmentConfiguration OutCPPEnvironmentConfiguration
)
{
}
/// <summary>
/// Allows a target to choose whether to use the shared build environment for a given configuration. Using
/// the shared build environment allows binaries to be reused between targets, but prevents customizing the
/// compile environment through SetupGlobalEnvironment().
/// </summary>
/// <param name="Target">Information about the target</param>
/// <returns>True if the target should use the shared build environment</returns>
[ObsoleteOverride("ShouldUseSharedBuildEnvironment() is deprecated in the 4.16 release. Set the BuildEnvironment field from the TargetRules constructor instead.")]
public virtual bool ShouldUseSharedBuildEnvironment(TargetInfo Target)
{
return UnrealBuildTool.IsEngineInstalled() || (Target.Type != global::UnrealBuildTool.TargetType.Program && !Target.IsMonolithic);
}
/// <summary>
/// Allows the target to specify modules which can be precompiled with the -Precompile/-UsePrecompiled arguments to UBT.
/// All dependencies of the specified modules will be included.
/// </summary>
/// <param name="Target">The target information, such as platform and configuration</param>
/// <param name="ModuleNames">List which receives module names to precompile</param>
[ObsoleteOverride("GetModulesToPrecompile() is deprecated in the 4.11 release. The -precompile option to UBT now automatically compiles all engine modules compatible with the current target.")]
public virtual void GetModulesToPrecompile(TargetInfo Target, List<string> ModuleNames)
{
}
/// <summary>
/// Allow target module to override UHT code generation version.
/// </summary>
[ObsoleteOverride("GetGeneratedCodeVersion() is deprecated in the 4.15 release. Set the GeneratedCodeVersion field from the TargetRules constructor instead.")]
public virtual EGeneratedCodeVersion GetGeneratedCodeVersion()
{
return GeneratedCodeVersion;
}
/// <summary>
/// Hack to allow deprecating existing code which references the static UEBuildConfiguration object; redirect it to use properties on this object.
/// </summary>
public TargetRules BuildConfiguration
{
get { return this; }
}
/// <summary>
/// Hack to allow deprecating existing code which references the static UEBuildConfiguration object; redirect it to use properties on this object.
/// </summary>
public TargetRules UEBuildConfiguration
{
get { return this; }
}
}
/// <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);
MacPlatform = new ReadOnlyMacTargetRules(Inner.MacPlatform);
PS4Platform = new ReadOnlyPS4TargetRules(Inner.PS4Platform);
WindowsPlatform = new ReadOnlyWindowsTargetRules(Inner.WindowsPlatform);
XboxOnePlatform = new ReadOnlyXboxOneTargetRules(Inner.XboxOnePlatform);
}
/// <summary>
/// Accessors for fields on the inner TargetRules instance
/// </summary>
#region Read-only accessor properties
#if !__MonoCS__
#pragma warning disable CS1591
#endif
public string Name
{
get { return Inner.Name; }
}
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 TargetType Type
{
get { return Inner.Type; }
}
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 bOutputPubliclyDistributable
{
get { return Inner.bOutputPubliclyDistributable; }
}
public UnrealTargetConfiguration UndecoratedConfiguration
{
get { return Inner.UndecoratedConfiguration; }
}
public bool bBuildAllPlugins
{
get { return Inner.bBuildAllPlugins; }
}
public IEnumerable<string> AdditionalPlugins
{
get { return Inner.AdditionalPlugins; }
}
public string PakSigningKeysFile
{
get { return Inner.PakSigningKeysFile; }
}
public string SolutionDirectory
{
get { return Inner.SolutionDirectory; }
}
public bool bOutputToEngineBinaries
{
get { return Inner.bOutputToEngineBinaries; }
}
public string ExeBinariesSubFolder
{
get { return Inner.ExeBinariesSubFolder; }
}
public EGeneratedCodeVersion GeneratedCodeVersion
{
get { return Inner.GeneratedCodeVersion; }
}
public bool bCompilePhysX
{
get { return Inner.bCompilePhysX; }
}
public bool bCompileAPEX
{
get { return Inner.bCompileAPEX; }
}
public bool bCompileNvCloth
{
get { return Inner.bCompileNvCloth; }
}
public bool bRuntimePhysicsCooking
{
get { return Inner.bRuntimePhysicsCooking; }
}
public bool bCompileBox2D
{
get { return Inner.bCompileBox2D; }
}
public bool bCompileICU
{
get { return Inner.bCompileICU; }
}
public bool bCompileCEF3
{
get { return Inner.bCompileCEF3; }
}
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 bForceBuildTargetPlatforms
{
get { return Inner.bForceBuildTargetPlatforms; }
}
public bool bForceBuildShaderFormats
{
get { return Inner.bForceBuildTargetPlatforms; }
}
public bool bCompileSimplygon
{
get { return Inner.bCompileSimplygon; }
}
public bool bCompileSimplygonSSF
{
get { return Inner.bCompileSimplygonSSF; }
}
public bool bCompileLeanAndMeanUE
{
get { return Inner.bCompileLeanAndMeanUE; }
}
public bool bCompileAgainstEngine
{
get { return Inner.bCompileAgainstEngine; }
}
public bool bCompileAgainstCoreUObject
{
get { return Inner.bCompileAgainstCoreUObject; }
}
public bool bIncludeADO
{
get { return Inner.bIncludeADO; }
}
public bool bCompileRecast
{
get { return Inner.bCompileRecast; }
}
public bool bCompileSpeedTree
{
get { return Inner.bCompileSpeedTree; }
}
public bool bForceEnableExceptions
{
get { return Inner.bForceEnableExceptions; }
}
public bool bForceEnableRTTI
{
get { return Inner.bForceEnableRTTI; }
}
public bool bWithServerCode
{
get { return Inner.bWithServerCode; }
}
public bool bCompileWithStatsWithoutEngine
{
get { return Inner.bCompileWithStatsWithoutEngine; }
}
public bool bCompileWithPluginSupport
{
get { return Inner.bCompileWithPluginSupport; }
}
public bool bWithPerfCounters
{
get { return Inner.bWithPerfCounters; }
}
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 bCompileFreeType
{
get { return Inner.bCompileFreeType; }
}
public bool bCompileForSize
{
get { return Inner.bCompileForSize; }
}
public bool bForceCompileDevelopmentAutomationTests
{
get { return Inner.bForceCompileDevelopmentAutomationTests; }
}
public bool bForceCompilePerformanceAutomationTests
{
get { return Inner.bForceCompilePerformanceAutomationTests; }
}
public bool bEventDrivenLoader
{
get { return Inner.bEventDrivenLoader; }
}
public bool bEnforceIWYU
{
get { return Inner.bEnforceIWYU; }
}
public bool bHasExports
{
get { return Inner.bHasExports; }
}
public bool bPrecompile
{
get { return Inner.bPrecompile; }
}
public bool bUsePrecompiled
{
get { return Inner.bUsePrecompiled; }
}
public bool bEnableOSX109Support
{
get { return Inner.bEnableOSX109Support; }
}
public bool bIsBuildingConsoleApplication
{
get { return Inner.bIsBuildingConsoleApplication; }
}
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 int MinGameModuleSourceFilesForUnityBuild
{
get { return Inner.MinGameModuleSourceFilesForUnityBuild; }
}
public bool bShadowVariableErrors
{
get { return Inner.bShadowVariableErrors; }
}
public bool bUndefinedIdentifierErrors
{
get { return Inner.bUndefinedIdentifierErrors; }
}
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 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 bAllowASLRInShipping
{
get { return Inner.bAllowASLRInShipping; }
}
public bool bSupportEditAndContinue
{
get { return Inner.bSupportEditAndContinue; }
}
public bool bOmitFramePointers
{
get { return Inner.bOmitFramePointers; }
}
public bool bStripSymbolsOnIOS
{
get { return Inner.bStripSymbolsOnIOS; }
}
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 bEnableCodeAnalysis
{
get { return Inner.bEnableCodeAnalysis; }
}
public string BundleVersion
{
get { return Inner.BundleVersion; }
}
public bool bDeployAfterCompile
{
get { return Inner.bDeployAfterCompile; }
}
public bool bCreateStubIPA
{
get { return Inner.bCreateStubIPA; }
}
public bool bCopyAppBundleBackToDevice
{
get { return Inner.bCopyAppBundleBackToDevice; }
}
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 string PCHOutputDirectory
{
get { return Inner.PCHOutputDirectory; }
}
public TargetLinkType LinkType
{
get { return Inner.LinkType; }
}
[Obsolete("IsMonolithic is deprecated in the 4.16 release. Check whether LinkType == TargetRules.TargetLinkType.Monolithic instead.")]
public bool IsMonolithic
{
get { return LinkType == TargetLinkType.Monolithic; }
}
public IReadOnlyList<string> GlobalDefinitions
{
get { return Inner.GlobalDefinitions.AsReadOnly(); }
}
public string LaunchModuleName
{
get { return Inner.LaunchModuleName; }
}
public IReadOnlyList<string> ExtraModuleNames
{
get { return Inner.ExtraModuleNames.AsReadOnly(); }
}
public TargetBuildEnvironment BuildEnvironment
{
get { return Inner.BuildEnvironment; }
}
public ReadOnlyAndroidTargetRules AndroidPlatform
{
get;
private set;
}
public ReadOnlyMacTargetRules MacPlatform
{
get;
private set;
}
public ReadOnlyPS4TargetRules PS4Platform
{
get;
private set;
}
public ReadOnlyWindowsTargetRules WindowsPlatform
{
get;
private set;
}
public ReadOnlyXboxOneTargetRules XboxOnePlatform
{
get;
private set;
}
public string OverrideExecutableFileExtension
{
get { return Inner.OverrideExecutableFileExtension; }
}
public bool bShouldCompileAsDLL
{
get { return Inner.bShouldCompileAsDLL; }
}
#if !__MonoCS__
#pragma warning restore C1591
#endif
#endregion
/// <summary>
/// Provide access to the RelativeEnginePath property for code referencing ModuleRules.BuildConfiguration.
/// </summary>
public string RelativeEnginePath
{
get { return UnrealBuildTool.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>
/// Wrapper around TargetRules.SetupBinaries
/// </summary>
/// <param name="Target">The target information - such as platform and configuration</param>
/// <param name="OutBuildBinaryConfigurations">Output list of binaries to generated</param>
/// <param name="OutExtraModuleNames">Output list of extra modules that this target could utilize</param>
public void SetupBinaries(TargetInfo Target, ref List<UEBuildBinaryConfiguration> OutBuildBinaryConfigurations, ref List<string> OutExtraModuleNames)
{
Inner.SetupBinaries(Target, ref OutBuildBinaryConfigurations, ref OutExtraModuleNames);
}
/// <summary>
/// Wrapper around TargetRules.ConfigureToolchain
/// </summary>
/// <param name="Target">The target currently being setup</param>
/// <returns>true if successful, false if not</returns>
public bool ConfigureToolchain(TargetInfo Target)
{
return Inner.ConfigureToolchain(Target);
}
}
}