UE4.27.2 构建项目放在 SolutionDirectory
2025-05-20 22:58:09

UnrealPakViewer

我是希望构建别人的一个查看 pak 的工具,来学习 PAK 的使用的

https://github.com/jashking/UnrealPakViewer

根据他的介绍,把他源码放到 Engine\Source\Programs 就可以了

我虽然放了,但是运行 GenerateProjectFiles.bat,重新编译之后没有出现 UnrealPakViewer 的项目

刚好看过 UE 构建系统,于是想找下问题在哪

调试 UnrealBuildTool 生成项目

调试到 ProjectFileGenerator.AddProjectsForAllTargets

这个函数开头遍历 AllTargetFiles

每一个 Target 判断是否在特定目录下,在才执行之后的逻辑

这个判断的结果存在 WantProjectFileForTarget,我调试的时候,UnrealPakViewer 也是通过了的

于是之后一堆生成项目的逻辑,假设暂时跳过

最后调试到生成项目的代码都是可以击中的

1
2
3
4
5
6
7
8
9
10
11
12
ProjectTarget ProjectTarget = new ProjectTarget()
{
TargetRules = TargetRulesObject,
TargetFilePath = TargetFilePath,
ProjectFilePath = ProjectFilePath,
UnrealProjectFilePath = CheckProjectFile,
SupportedPlatforms = TargetRulesObject.GetSupportedPlatforms().Where(
x => UEBuildPlatform.GetBuildPlatform(x, true) != null &&
(TargetRulesObject.LinkType != TargetLinkType.Modular || !UEBuildPlatform.PlatformRequiresMonolithicBuilds(x, TargetRulesObject.Configuration))
).ToArray(),
CreateRulesDelegate = (Platform, Configuration) => RulesAssembly.CreateTargetRules(TargetName, Platform, Configuration, "", CheckProjectFile, new CommandLineArguments(GetTargetArguments(Arguments)))
};

这里给出了生成的路径

1
<path to engine>\UnrealEngine\Engine\Intermediate\ProjectFiles\UnrealPakViewer.vcxproj

我一看,也是有的。构建也会成功,也会生成 exe。

那为什么我在 VS 项目视图看不到呢

刷新项目的方法

于是看了别人是怎么做的。别人是

1
Engine\Binaries\DotNET\UnrealBuildTool.exe -ProjectFiles Engine\Source\Programs\UnrealPakViewer

然后用 Visual Studio 重新打开 VS 项目,我这里还真的就可以了。

我再重新用 Rider 打开,就看不到新项目。所以这还是 IDE 的问题。

好吧,后来才发现,是这个插件写到了 ExternalPrograms 文件夹下,这个是写在 UnrealPakViewer.Target.cs 的 SolutionDirectory