Post

一种把多个虚幻工程解决方案合而为一的方法

一种把多个虚幻工程解决方案合而为一的方法

使用引擎目录的GenerateProjectFiles.bat.uprojectdirs文件

  • 首先参考Default.uprojectdirs文件中的注释
  • 新建my.uprojectdirs或直接修改Default.uprojectdirs文件,并写入例如Project/
  • 此时运行GenerateProjectFiles.bat生成解决方案时,会额外从引擎目录/Project目录下的1级子目录寻找虚幻工程目录, 例如UnrealEngine/Project/LyraGame
  • 完成

因为.uprojectdirs文件中只支持指定子目录,若想要外部目录的工程也被包含进解决方案文件,可以使用系统提供的symbol-link功能

已废弃方法

初衷

因为工作,学习的原因,我本地会有多个虚幻工程,并且它们共用了同一个引擎

它们的工程文件默认都是由UBT(Unreal Build Tool)生成的,独立的解决方案文件

这给我带来的一些问题:

  • 由于打开解决方案的成本较高,同时打开多个解决方案时的等待时间,内存占用可能都是成倍增加的

  • 在IDE抽风,或者引擎代码更新而触发符号重新解析的时候,等待时间少则15分钟起步,那叫一个折磨

我认为不同解决方案中,物理路径相同的工程,应该视为同一个工程,虚幻引擎的工程不应该在每个解决方案都重新解析一遍

但目前用过的RiderVisual Studio(宇宙第一IDE)都是会在每个解决方案中重新解析一遍.非常折磨,其中原由,令人费解,希望能有大佬告知一下

需求

所以我就在想,既然这些个IDE这么”愚笨”,靠不住,那我能否找到一个方法,手动把多个解决方案合成一个呢?

步骤

下面分享的是,我使用Rider时的操作步骤:

  1. 在想要多开的解决方案中,随意选择一个作为”主解决方案“,并打开

  2. 添加其它工程文件

  • Explorer解决方案浏览器中,右键任意工程文件夹,比如Games,选择Add,Add Existing Project...,然后选择相关的工程文件

  • 假如要添加的工程是LyraStarterGame,那么它的工程文件应该位于LyraStarterGame_Folder\\Intermediate\\ProjectFiles\\LyraStarterGame.vcxproj

  1. 在”解决方案配置”中,修改刚刚添加的工程的配置
  • 点击右上角的工具栏中的DebugGameEditor | Win64按钮(这是我的解决方案编译配置,根据你的实际情况,文字会有所不同),然后选择Edit Solution Comfigurations...

  • 找到刚刚添加的工程,可以看到它们当前都是默认的配置,可能是DebugClient | Arm64什么的,把它改成你需要的配置,一般是与解决方案编译配置一致

  1. 修改工程文件参数
  • 回到Explorer解决方案浏览器

  • 右键刚刚添加的工程(这里我拿LyraStarterGame举例),选择Edit,Edit LyraStarterGame.vcxproj

  • LyraStarterGame.vcxproj文件中所有$(SolutionDir)替换为$(ProjectDir)..\\..\\ ($(SolutionDir)当前解决方案的根目录,$(ProjectDir)当前工程的工程文件所在目录,即LyraStarterGame_Folder\\Intermediate\\ProjectFiles\\,所以这里使用两次..\\,获得了当前工程的根目录)

  • 如果不想一次性全都替换,也可以搜索你的”编译配置“,比如 DebugGame_Editor|x64,找到对应编译配置的相关配置,只替换三个NMake相关的命令行中的文本,但可能会存在工程文件无法正常解析符号的问题:比如Switch Header/Source功能无法使用,语法着色失效等,如遇到问题,进行全量替换即可

不足

每次通过UBT重新生成解决方案文件时,相关的工程文件会被覆盖,上面的操作需要重新执行一次.如果能有IDE的支持,或者自动化的工具就好了

This post is licensed under CC BY 4.0 by the author.