You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
97 lines
3.4 KiB
C#
97 lines
3.4 KiB
C#
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
using UnrealBuildTool;
|
|
|
|
[SupportedPlatforms("Win64")]
|
|
public abstract class DatasmithMaxBaseTarget : TargetRules
|
|
{
|
|
public DatasmithMaxBaseTarget(TargetInfo Target)
|
|
: base(Target)
|
|
{
|
|
Type = TargetType.Program;
|
|
IncludeOrderVersion = EngineIncludeOrderVersion.Latest;
|
|
SolutionDirectory = "Programs/Datasmith";
|
|
bBuildInSolutionByDefault = false;
|
|
bLegalToDistributeBinary = true;
|
|
|
|
bShouldCompileAsDLL = true;
|
|
LinkType = TargetLinkType.Monolithic;
|
|
|
|
WindowsPlatform.ModuleDefinitionFile = "Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMaxExporterWithDirectLink.def";
|
|
|
|
WindowsPlatform.bStrictConformanceMode = false;
|
|
|
|
bBuildDeveloperTools = false;
|
|
bBuildWithEditorOnlyData = true;
|
|
bCompileAgainstEngine = false;
|
|
bCompileAgainstCoreUObject = true;
|
|
bCompileICU = false;
|
|
bUsesSlate = false;
|
|
|
|
bHasExports = true;
|
|
bForceEnableExceptions = true;
|
|
|
|
GlobalDefinitions.Add("UE_EXTERNAL_PROFILING_ENABLED=0"); // For DirectLinkUI (see FDatasmithExporterManager::FInitOptions)
|
|
|
|
// Setting CppStandard to Cpp17 as new CppStandardVersion.Default is Cpp20 and this implies "/permissive-" for MSVC which
|
|
// doesn't work well with 3ds Max includes(lots of non-conformance like const to non-const string conversion, temp to &, etc)
|
|
//
|
|
// For some reason, adding following doesn't help 100%. Even though docs says that should override "/permissive-"'s settings like C2102:
|
|
// AdditionalCompilerArguments = " /Zc:referenceBinding- /Zc:strictStrings- /Zc:rvalueCast- ";
|
|
//
|
|
// 3dsMax uses MSVC extension which allows taking address of a class rvalue returned from a function:
|
|
// class V
|
|
// {
|
|
// int dummy;
|
|
// };
|
|
//
|
|
// class C {
|
|
// public:
|
|
// V get() const { return V(); }
|
|
// };
|
|
// void f(V* ){}
|
|
// int main() {
|
|
// C c;
|
|
// f(&(c.get()));// In conformance mode C2102 '&' requires l-value, but MSVC allows this by default
|
|
// }
|
|
// This behavior is disabled when c++20 enabled and is not repaired with any /Zc option. Seems like it only works with "/permissive" enabled. But...
|
|
// Reverting permissive breaks Engine compilation because of operator resolution ambiguity(which doesn't happen with stricter checks) and other issues:
|
|
// AdditionalCompilerArguments = " /permissive ";
|
|
CppStandard = CppStandardVersion.Cpp17;
|
|
|
|
// todo: remove?
|
|
// bSupportEditAndContinue = true;
|
|
}
|
|
|
|
protected void AddCopyPostBuildStep(TargetInfo Target)
|
|
{
|
|
// Add a post-build step that copies the output to a file with the .dle extension
|
|
string OutputName = "$(TargetName)";
|
|
if (Target.Configuration != UnrealTargetConfiguration.Development)
|
|
{
|
|
OutputName = string.Format("{0}-{1}-{2}", OutputName, Target.Platform, Target.Configuration);
|
|
}
|
|
|
|
string SrcOutputFileName = string.Format(@"$(EngineDir)\Binaries\Win64\{0}\{1}.dll", ExeBinariesSubFolder, OutputName);
|
|
|
|
string DstOutputFileName;
|
|
|
|
DstOutputFileName = string.Format(@"$(EngineDir)\Binaries\Win64\{0}\{1}.gup", ExeBinariesSubFolder, OutputName);
|
|
|
|
PostBuildSteps.Add(string.Format("echo Copying {0} to {1}...", SrcOutputFileName, DstOutputFileName));
|
|
PostBuildSteps.Add(string.Format("copy /Y \"{0}\" \"{1}\" 1>nul", SrcOutputFileName, DstOutputFileName));
|
|
}
|
|
}
|
|
|
|
public class DatasmithMax2017Target : DatasmithMaxBaseTarget
|
|
{
|
|
public DatasmithMax2017Target(TargetInfo Target)
|
|
: base(Target)
|
|
{
|
|
LaunchModuleName = "DatasmithMax2017";
|
|
ExeBinariesSubFolder = @"3DSMax\2017";
|
|
|
|
AddCopyPostBuildStep(Target);
|
|
}
|
|
}
|