Files
UnrealEngine/Engine/Source/ThirdParty/MaterialX/MaterialX.Build.cs
2025-05-18 13:04:45 +08:00

104 lines
2.9 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using System.Collections.Generic;
using System.IO;
using UnrealBuildTool;
public class MaterialX : ModuleRules
{
public MaterialX(ReadOnlyTargetRules Target) : base(Target)
{
Type = ModuleType.External;
bool bDebug = (Target.Configuration == UnrealTargetConfiguration.Debug && Target.bDebugBuildsActuallyUseDebugCRT);
string DeploymentDirectory = Path.Combine(ModuleDirectory, "Deploy", "MaterialX-1.38.10");
PublicSystemIncludePaths.Add(Path.Combine(DeploymentDirectory, "include"));
List<string> MaterialXLibraries = new List<string> {
"MaterialXCore",
"MaterialXFormat",
"MaterialXGenGlsl",
"MaterialXGenMdl",
"MaterialXGenMsl",
"MaterialXGenOsl",
"MaterialXGenShader",
"MaterialXRender",
"MaterialXRenderGlsl",
"MaterialXRenderHw",
"MaterialXRenderOsl"
};
string LibPostfix = bDebug ? "_d" : "";
if (Target.IsInPlatformGroup(UnrealPlatformGroup.Windows))
{
string LibDirectory = Path.Combine(
DeploymentDirectory,
"VS" + Target.WindowsPlatform.GetVisualStudioCompilerVersionName(),
Target.Architecture.WindowsLibDir,
"lib");
foreach (string MaterialXLibrary in MaterialXLibraries)
{
string StaticLibName = MaterialXLibrary + LibPostfix + ".lib";
PublicAdditionalLibraries.Add(
Path.Combine(LibDirectory, StaticLibName));
}
}
else if (Target.Platform == UnrealTargetPlatform.Mac)
{
// MaterialXRenderMsl is only supported on Mac.
MaterialXLibraries.Add("MaterialXRenderMsl");
string LibDirectory = Path.Combine(
DeploymentDirectory,
"Mac",
"lib");
foreach (string MaterialXLibrary in MaterialXLibraries)
{
string StaticLibName = "lib" + MaterialXLibrary + LibPostfix + ".a";
PublicAdditionalLibraries.Add(
Path.Combine(LibDirectory, StaticLibName));
}
}
else if (Target.IsInPlatformGroup(UnrealPlatformGroup.Unix))
{
// Note that since we no longer support OpenGL on
// Linux, we do not build the MaterialXRender
// libraries, since MaterialX does not offer a way to
// disable only MaterialXRenderGlsl, which requires
// linking against OpenGL.
MaterialXLibraries = new List<string> {
"MaterialXCore",
"MaterialXFormat",
"MaterialXGenGlsl",
"MaterialXGenMdl",
"MaterialXGenMsl",
"MaterialXGenOsl",
"MaterialXGenShader"
};
string LibDirectory = Path.Combine(
DeploymentDirectory,
"Unix",
Target.Architecture.LinuxName,
"lib");
foreach (string MaterialXLibrary in MaterialXLibraries)
{
string StaticLibName = "lib" + MaterialXLibrary + LibPostfix + ".a";
PublicAdditionalLibraries.Add(
Path.Combine(LibDirectory, StaticLibName));
}
}
// Add the MaterialX standard data libraries as runtime dependencies.
RuntimeDependencies.Add(
Path.Combine(Target.UEThirdPartyBinariesDirectory, "MaterialX", "libraries", "..."),
StagedFileType.NonUFS);
}
}