当前位置:   article > 正文

UE源码编译笔记

ue源码编译

内网编译

方法一:zip包

UE引擎编译时需要需要下载依赖,如果想要在内网环境下编译,之前的做法是在外网下载一个带有完整依赖的包到内网,但是UE在编译的过程中往往会修改文件,结果运行Setup.bat文件时会检测说,依赖存在问题。
幸运的是Setup.bat文件提供了缓存的便利,当使用cmd运行代码./Setup.bat --help时,这时就会看到一些编译选项,其中--cahce=<dir>就表示可以指定缓存路径,这种情况下就可以主动把依赖缓存下来。

  • cmd执行./Setup.bat --cache=../ue_cache,这里的ue_cache表示的是缓存文件夹,可以自行修改。
  • ue_cache传到内网中,内网电脑运行相同指令./Setup.bat --cache=../ue_cache,就可以直接使用缓存中的安装依赖。从此再也不同担心内网编译的依赖问题了。

方法二:直接clone源码

可以直接从clone源码以后,在外网运行一次Setup.bat之后,运行Setup.bat的时候会将依赖存放进**.git中,之后切换分支或者运行Setup.bat时就会自动从.git**中加载依赖。这样直接把文件夹整体打成zip包传到内网即可

使用源码构建的引擎固定UUID

UnrealVersionSelector

  • 修改build.version文件
    • 文件**/Engine/Build/build.version中添加BuildId**字段,可以使用指定的UUID作为引擎的固定UUID,不填的话,团队其他成员编译项目时会重新编译引擎。
  • 修改FDesktopPlatformWindows::RegisterEngineInstallation函数
    • 修改NewIdentifier为引擎版本号,否则团队其他人使用引擎打开项目被被提示引擎版本不同。
// DesktopPlatfromWindows.cpp
bool FDesktopPlatformWindows::RegisterEngineInstallation(const FString &RootDir, FString &OutIdentifier)
{
  bool bRes = false;
  if(IsValidRootDirectory(RootDir))
  {
    HKEY hRootKey;
    if(RegCreateKeyEx(HKEY_CURRENT_USER, InstallationsSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hRootKey, NULL) == ERROR_SUCCESS)
    {
      FString NewIdentifier = FGuid::NewGuid().ToString(EGuidFormats::DigitsWithHyphensInBraces);
      LRESULT SetResult = RegSetValueEx(hRootKey, *NewIdentifier, 0, REG_SZ, (const BYTE*)*RootDir, (RootDir.Len() + 1) * sizeof(TCHAR));
      RegCloseKey(hRootKey);

      if(SetResult == ERROR_SUCCESS)
      {
        OutIdentifier = NewIdentifier;
        bRes = true;
      }
    }
  }
  return bRes;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

编译代码时出现git status卡很长时间

修改BuildConfiguration.xml文件修改为

<?xml version="1.0" encoding="utf-8"?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
	<SourceFileWorkingSet> 
		<Provider> none </Provider> 
		<RepositoryPath></RepositoryPath> 
		<GitPath></GitPath> 
	</SourceFileWorkingSet>
</Configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

设置UBT线程数加速编译

UE文档-构建配置

内网中编译UE5

UE5的编译需要使用到nuget包,因此内网中编译UE非常重要的一步就是设置nuget的缓存包

Mac M1编译4.27源码报错

报错信息compile Variable 'MallocCrashOverhead' set but not used
参考链接:https://forums.unrealengine.com/t/xcode13-3-with-unreal4-26-2-create-c-project-error/508357/5?u=online_learner_uvvf4
解决方案:

  1. 打开UE_4.27/Engine/Source/Programs/UnrealBuildTool/Platform/Mac/MacToolChain.cs,搜索-Wall并注销所在行代码
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/91340
推荐阅读
相关标签
  

闽ICP备14008679号