Unreal 5.1.1 支援 Swift Framework

1 min
Unreal 5.1.1 支援 Swift Framework
Unreal 5.1.1 支援 Swift Framework

公司最近專案升級上 StoreKitV2 ,Unreal 這裡官方早期的 Install 並不支援 Swift,所以就來研究了一番。

原先使用的方式是修改引擎,但寫個 Plugin 還要改引擎,這樣使用 Plugin 的也要改引擎實在不是很好的方向。

後來看到 Unreal 5.2 內新增了 Swift Module

private static string GetSwiftStandardLibraryLinkPath(string PlatformPath)
{
	string XcodeRoot = Utils.RunLocalProcessAndReturnStdOut("/usr/bin/xcode-select", "--print-path");
	return  $"{XcodeRoot}/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/{PlatformPath}";
}

他主要的邏輯在這裡,利用 Xcode 指令查出 Xcode Path 進而載入 Swift SDK,只要啟用 Module 應該就可以支援。

但我是製作 Plugin,所以我換了一個方式,在 Plugin Build.cs 內做類似的事情

// 添加 Swift SDK
if (Target.Platform == UnrealTargetPlatform.IOS || Target.Platform == UnrealTargetPlatform.Mac)
	{
		string SWIFT_SDKROOT = Utils.RunLocalProcessAndReturnStdOut("/usr/bin/xcrun", "--sdk iphoneos --show-sdk-path");
		PublicSystemLibraryPaths.Add(SWIFT_SDKROOT + "/usr/lib/swift");
		PublicSystemLibraryPaths.Add(SWIFT_SDKROOT + "../../../../../../Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos");
		PublicSystemLibraryPaths.Add(SWIFT_SDKROOT + "../../../../../../Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos");
		PublicSystemLibraryPaths.Add(SWIFT_SDKROOT + "../../../../../../Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.5/iphoneos");
}

然後我在 iOS UPL 內複製到 Build Dir

<!-- 執行 Swift SDK 複製到 Build Dir -->
<prebuildCopies>
	<log text="複製 Swift SDK"/>
	<copyDir src="$S(EngineDir)/Intermediate/UnzippedFrameworks/swift_framework_dynamic/swift_framework_dynamic.embeddedframework/swift_framework_dynamic.framework" dst="$S(BuildDir)/Frameworks/swift_framework_dynamic.framework" />
</prebuildCopies>

Comments

Loading comments...