Skip to content

Commit 4d477dd

Browse files
增加:UE5.2的编译支持
1 parent 030a3c1 commit 4d477dd

10 files changed

Lines changed: 68 additions & 16 deletions

File tree

Plugins/UnLua/Source/ThirdParty/Lua/Lua.Build.cs

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,13 @@ private void BuildForWin64()
8484

8585
private void BuildForAndroid()
8686
{
87-
var NDKRoot = Environment.GetEnvironmentVariable("NDKROOT");
88-
if (NDKRoot == null)
87+
var ndkRoot = Environment.GetEnvironmentVariable("NDKROOT");
88+
if (ndkRoot == null)
8989
throw new BuildException("can't find NDKROOT");
9090

91-
var toolchain = AndroidExports.CreateToolChain(Target.ProjectFile);
92-
var NdkApiLevel = toolchain.GetNdkApiLevelInt(21);
93-
91+
var toolchain = GetAndroidToolChain();
92+
var ndkApiLevel = toolchain.GetNdkApiLevelInt(21);
93+
Console.WriteLine("toolchain.GetNdkApiLevelInt=", ndkApiLevel);
9494
var abiNames = new[] { "armeabi-v7a", "arm64-v8a", "x86_64" };
9595
foreach (var abiName in abiNames)
9696
{
@@ -102,16 +102,30 @@ private void BuildForAndroid()
102102
EnsureDirectoryExists(libFile);
103103
var args = new Dictionary<string, string>
104104
{
105-
{ "CMAKE_TOOLCHAIN_FILE", Path.Combine(NDKRoot, "build/cmake/android.toolchain.cmake") },
105+
{ "CMAKE_TOOLCHAIN_FILE", Path.Combine(ndkRoot, "build/cmake/android.toolchain.cmake") },
106106
{ "ANDROID_ABI", abiName },
107-
{ "ANDROID_PLATFORM", "android-" + NdkApiLevel }
107+
{ "ANDROID_PLATFORM", "android-" + ndkApiLevel }
108108
};
109109
var buildDir = CMake(args);
110110
var buildFile = Path.Combine(buildDir, m_LibName);
111111
File.Copy(buildFile, libFile, true);
112112
}
113113
}
114114

115+
private IAndroidToolChain GetAndroidToolChain()
116+
{
117+
#if UE_5_2_OR_LATER
118+
var ueBuildPlatformType = Assembly.GetAssembly(typeof(IAndroidToolChain)).GetType("UnrealBuildTool.UEBuildPlatform");
119+
var getBuildPlatformMethod = ueBuildPlatformType.GetMethod("GetBuildPlatform", BindingFlags.Static | BindingFlags.Public);
120+
var androidBuildPlatform = getBuildPlatformMethod.Invoke(null, new object[] { UnrealTargetPlatform.Android });
121+
var createTempToolChainForProjectMethod = androidBuildPlatform.GetType().GetMethod("CreateTempToolChainForProject");
122+
var toolchain = (IAndroidToolChain)createTempToolChainForProjectMethod.Invoke(androidBuildPlatform, new object[] { Target.ProjectFile });
123+
#else
124+
var toolchain = AndroidExports.CreateToolChain(Target.ProjectFile);
125+
#endif
126+
return toolchain;
127+
}
128+
115129
private void BuildForLinux()
116130
{
117131
var libFile = GetLibraryPath();
@@ -174,14 +188,18 @@ private void BuildForLinuxAArch64()
174188

175189
private void BuildForMac()
176190
{
191+
#if UE_5_2_OR_LATER
192+
var abiName = Target.Architecture.ToString();
193+
#else
177194
var abiName = Target.Architecture;
195+
#endif
178196
var libFile = GetLibraryPath(abiName);
179197
if (!File.Exists(libFile))
180198
{
181199
EnsureDirectoryExists(libFile);
182200
var args = new Dictionary<string, string>
183201
{
184-
{ "CMAKE_OSX_ARCHITECTURES", Target.Architecture }
202+
{ "CMAKE_OSX_ARCHITECTURES", abiName }
185203
};
186204
var buildDir = CMake(args);
187205
var buildFile = Path.Combine(buildDir, m_LibName);
@@ -237,7 +255,7 @@ private void BuildForPS5()
237255
var args = new Dictionary<string, string>
238256
{
239257
{ "CMAKE_TOOLCHAIN_FILE", Path.Combine(sceRootDir, @"Prospero\Tools\CMake\PS5.cmake") },
240-
{ "PS5", "1"}
258+
{ "PS5", "1" }
241259
};
242260
var buildDir = CMake(args);
243261
var buildFile = Path.Combine(buildDir, m_Config, m_LibName);
@@ -381,7 +399,7 @@ private string GetLuaVersion()
381399
return version;
382400
return "lua-5.4.3";
383401
}
384-
402+
385403
private void EnsureDirectoryExists(string fileName)
386404
{
387405
var dirName = Path.GetDirectoryName(fileName);

Plugins/UnLua/Source/UnLua/Public/UnLuaTemplate.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#pragma once
1616

1717
#include "CoreUObject.h"
18+
#include "Misc/EngineVersionComparison.h"
1819
#include <type_traits>
1920

2021
namespace UnLua
@@ -38,7 +39,17 @@ namespace UnLua
3839
template<class T1, class T2>
3940
static int32 Identical(...);
4041
};
41-
template<typename T1, typename T2 = T1> struct THasEqualityOperator { enum { Value = TIsSame<decltype(FHasEqualityOperatorImpl::Identical<T1, T2>(nullptr)), bool>::Value }; };
42+
template<typename T1, typename T2 = T1> struct THasEqualityOperator
43+
{
44+
enum
45+
{
46+
#if UE_VERSION_OLDER_THAN(5, 2, 0)
47+
Value = TIsSame<decltype(FHasEqualityOperatorImpl::Identical<T1, T2>(nullptr)), bool>::Value
48+
#else
49+
Value = std::is_same_v<decltype(FHasEqualityOperatorImpl::Identical<T1, T2>(nullptr)), bool>
50+
#endif
51+
};
52+
};
4253

4354

4455
/**

Plugins/UnLua/Source/UnLua/UnLua.Build.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ public class UnLua : ModuleRules
2525
{
2626
public UnLua(ReadOnlyTargetRules Target) : base(Target)
2727
{
28+
#if UE_5_2_OR_LATER
29+
IWYUSupport = IWYUSupport.None;
30+
#else
2831
bEnforceIWYU = false;
32+
#endif
2933
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
3034

3135
PublicIncludePaths.AddRange(

Plugins/UnLua/Source/UnLuaDefaultParamCollector/UnLuaDefaultParamCollector.Build.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ public class UnLuaDefaultParamCollector : ModuleRules
2121
{
2222
public UnLuaDefaultParamCollector(ReadOnlyTargetRules Target) : base(Target)
2323
{
24-
bEnforceIWYU = false;
24+
#if UE_5_2_OR_LATER
25+
IWYUSupport = IWYUSupport.None;
26+
#else
27+
bEnforceIWYU = false;
28+
#endif
2529

2630
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
2731

Plugins/UnLua/Source/UnLuaEditor/UnLuaEditor.Build.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ public class UnLuaEditor : ModuleRules
1919
{
2020
public UnLuaEditor(ReadOnlyTargetRules Target) : base(Target)
2121
{
22+
#if UE_5_2_OR_LATER
23+
IWYUSupport = IWYUSupport.None;
24+
#else
2225
bEnforceIWYU = false;
26+
#endif
2327

2428
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
2529

Plugins/UnLuaExtensions/LuaProtobuf/Source/LuaProtobuf.Build.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ public class LuaProtobuf : ModuleRules
2020
{
2121
public LuaProtobuf(ReadOnlyTargetRules Target) : base(Target)
2222
{
23+
#if UE_5_2_OR_LATER
24+
IWYUSupport = IWYUSupport.None;
25+
#else
2326
bEnforceIWYU = false;
27+
#endif
2428
bUseUnity = false;
2529
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
2630
bEnableUndefinedIdentifierWarnings = false;

Plugins/UnLuaExtensions/LuaRapidjson/Source/LuaRapidjson.Build.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ public class LuaRapidjson : ModuleRules
2020
{
2121
public LuaRapidjson(ReadOnlyTargetRules Target) : base(Target)
2222
{
23+
#if UE_5_2_OR_LATER
24+
IWYUSupport = IWYUSupport.None;
25+
#else
2326
bEnforceIWYU = false;
27+
#endif
2428
bUseUnity = false;
2529
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
2630
bEnableUndefinedIdentifierWarnings = false;

Plugins/UnLuaExtensions/LuaSocket/Source/LuaSocket.Build.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ public class LuaSocket : ModuleRules
2020
{
2121
public LuaSocket(ReadOnlyTargetRules Target) : base(Target)
2222
{
23+
#if UE_5_2_OR_LATER
24+
IWYUSupport = IWYUSupport.None;
25+
#else
2326
bEnforceIWYU = false;
27+
#endif
2428
bUseUnity = false;
2529
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
2630
bEnableUndefinedIdentifierWarnings = false;

Plugins/UnLuaTestSuite/Source/UnLuaTestSuite/Private/Tests/Issue473Test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ struct FUnLuaTest_Issue473 : FUnLuaTestBase
3838
)";
3939
UnLua::RunChunk(L, Chunk);
4040

41-
const auto Actual = UTF8_TO_TCHAR(lua_tostring(L, -1));
42-
RUNNER_TEST_EQUAL(Actual, TEXT("虚幻引擎"));
41+
const auto Actual = lua_tostring(L, -1);
42+
RUNNER_TEST_EQUAL(UTF8_TO_TCHAR(Actual), TEXT("虚幻引擎"));
4343
return true;
4444
}
4545
};

Source/TPSProject/TutorialObject.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ static int32 FTutorialObject_New(lua_State* L)
2525
}
2626

2727
const auto UserData = NewUserdataWithPadding(L, sizeof(FTutorialObject), "FTutorialObject");
28-
const auto Name = UTF8_TO_TCHAR(NameChars);
29-
new(UserData) FTutorialObject(Name);
28+
new(UserData) FTutorialObject(UTF8_TO_TCHAR(NameChars));
3029
return 1;
3130
}
3231

0 commit comments

Comments
 (0)