unreal C盘缓存修改

大纲

  • runner的搭建
  • 异常
  • 乱码
  • checkout的问题
  • GitDependencies
  • vs 2019的编译日志输出到ci

runner的搭建

按照wiki的说明搭建基本的runner

异常

  • 长路径

https://docs.microsoft.com/zh-cn/windows/win32/fileio/naming-a-file#maximum-path-length-limitation

打开注册表(使用cmd regedit打开)将以下值改为 1 即可!

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled (Type: REG_DWORD)

因为使用的是CI,还需要对git runner进行处理

before_script:
	- git config --system core.longpaths true

乱码

[[runners]]
	executeer = "shell"  
	shell = "powershell"  
	pre_clone_script = "chcp 65001"  
	pre_build_script = "chcp 65001"

checkout的问题

防止ci每次对已经Setup完成的项目进行清理

variables:
	GIT_STRATEGY: fetch
	GIT_CHECKOUT: "false"

GitDependencies

在执行setup.bat的时候,会遇到File.Create字符长度超260的异常,,经过n轮查找,是File.cs中已经对useLongPath = false了;所以最简单的方法是将全路径改短;(我这里最大长度是264,刚好改一下文件后缀就可以了!)

在ue的源码中,找到{源码}\Engine\Source\Programs\GitDependencies工程的Program.cs文件,找到const string IncomingFileSuffix = ".incoming";改成以下这样后重新编译生成GitDependencies.exe

IncomingFileSuffix = ".b";

将生成的GitDependencies.exe【位置在\Engine\Source\Programs\GitDependencies\bin\Development下】;覆盖到\Engine\Binaries\DotNET下就可以了!

补充

咨询了一下ue的大佬,在修改windows的长路径支持后,在Unreal Editor下也开启长路径支持就可以了!

在注册表中找到一下的路径,将这个值改为1即可

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled (Type: REG_DWORD)

Unreal EditorEditor Preferences中开启Enable Support for long paths 就可以(未测试,但是大佬说可以,那就应该是没有问题!)

但是以上这种都是需要有视图的,我不可能打开远程打包机器改配置吧?所以还是需要能通过改配置文件的形式修改!

Engine\Config\BaseEditorPerProjectUserSettings.ini

[/Script/UnrealEd.EditorExperimentalSettings]
bEnableLongPathsSupport=True

如果是项目性质的,就可以在Saved\Config\Windows\EditorPerProjectUserSettings.ini

[/Script/UnrealEd.EditorExperimentalSettings]
bEnableLongPathsSupport=True

vs 2019的编译日志输出到ci

直接使用devenv.exe是不能输出到console的,必须要是用devenv.com才可以!

variables:
  VS_PATH: "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/devenv.com"
  ...
script: 
    - echo $VS_PATH
    - echo $CI_PROJECT_DIR
    - "& \"$VS_PATH\" \"${CI_PROJECT_DIR}/UE4.sln\" \"/build\" \"Development Editor|Win64\" \"/Project\" \"UE4\""
    - echo "UE_Build Finish"

到此位置,已经全部流程跑完,已经没有问题了!