Files
UnrealEngine/Engine/Source/Developer/DesktopPlatform/Private/MultiPlatformTargetReceiptBuildWorkers.cpp
2025-05-18 13:04:45 +08:00

34 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "MultiPlatformTargetReceiptBuildWorkers.h"
FMultiPlatformTargetReceiptBuildWorkers::FMultiPlatformTargetReceiptBuildWorkers(const TCHAR* TargetReceiptFilePath)
: bAllPlatformsInitialized(false)
{
FString PathString = TargetReceiptFilePath;
if (!PathString.Contains(TEXT("$(Platform)")))
{
new(&PlatformSpecificWorkerFactories[0]) FTargetReceiptBuildWorker(*PathString);
return;
}
new(&PlatformSpecificWorkerFactories[SupportedPlatform_Win64]) FTargetReceiptBuildWorker(*PathString.Replace(TEXT("$(Platform)"), TEXT("Win64")));
new(&PlatformSpecificWorkerFactories[SupportedPlatform_Mac]) FTargetReceiptBuildWorker(*PathString.Replace(TEXT("$(Platform)"), TEXT("Mac")));
new(&PlatformSpecificWorkerFactories[SupportedPlatform_Linux]) FTargetReceiptBuildWorker(*PathString.Replace(TEXT("$(Platform)"), TEXT("Linux")));
bAllPlatformsInitialized = true;
}
FMultiPlatformTargetReceiptBuildWorkers::~FMultiPlatformTargetReceiptBuildWorkers()
{
if (bAllPlatformsInitialized)
{
((FTargetReceiptBuildWorker*)&PlatformSpecificWorkerFactories[SupportedPlatform_Win64])->~FTargetReceiptBuildWorker();
((FTargetReceiptBuildWorker*)&PlatformSpecificWorkerFactories[SupportedPlatform_Mac])->~FTargetReceiptBuildWorker();
((FTargetReceiptBuildWorker*)&PlatformSpecificWorkerFactories[SupportedPlatform_Linux])->~FTargetReceiptBuildWorker();
}
else
{
((FTargetReceiptBuildWorker*)&PlatformSpecificWorkerFactories[0])->~FTargetReceiptBuildWorker();
}
}