问题现象:
报错日志targets with a unique build environment cannot be built with an installed engine.错误堆栈如下。
Targets with a unique build environment cannot be built with an installed engine.
CompilationResultException: Targets with a unique build environment cannot be built with an installed engine.
at UnrealBuildTool.RulesAssembly.CreateTargetRulesInstance(String TypeName, TargetInfo TargetInfo, ILogger Logger, Boolean IsTestTarget, Boolean bSkipValidation) in D:\build\++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\System\RulesAssembly.cs:line 653
at UnrealBuildTool.RulesAssembly.CreateTargetRules(String TargetName, UnrealTargetPlatform Platform, UnrealTargetConfiguration Configuration, UnrealArchitectures Architectures, FileReference ProjectFile, CommandLineArguments Arguments, ILogger Logger, Boolean IsTestTarget, Boolean bSkipValidation, UnrealIntermediateEnvironment IntermediateEnvironment) in D:\build\++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\System\RulesAssembly.cs:line 848
at UnrealBuildTool.ProjectFileGenerator.AddProjectsForAllTargets(PlatformProjectGeneratorCollection PlatformProjectGenerators, List`1 AllGames, List`1 AllTargetFiles, String[] Arguments, List`1 EngineProjects, List`1 GameProjects, Dictionary`2 ProjectFileToUProjectFile, Dictionary`2 ProgramProjects, Dictionary`2 RulesAssemblies, ILogger Logger) in D:\build\++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\ProjectFiles\ProjectFileGenerator.cs:line 2782
at UnrealBuildTool.ProjectFileGenerator.GenerateProjectFiles(PlatformProjectGeneratorCollection PlatformProjectGenerators, String[] Arguments, Boolean bCacheDataForEditor, ILogger Logger) in D:\build\++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\ProjectFiles\ProjectFileGenerator.cs:line 1038
at UnrealBuildTool.GenerateProjectFilesMode.ExecuteAsync(CommandLineArguments Arguments, ILogger Logger) in D:\build\++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Modes\GenerateProjectFilesMode.cs:line 65
at UnrealBuildTool.UnrealBuildTool.Main(String[] ArgumentsArray) in D:\build\++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.cs:line 660
WriteFileIfChanged() wrote 0 changed files of 2 requested writes.
解决方法:
去除source目录下冲突的.target.cs文件。在 Unreal Engine 项目中,.Target.cs
文件是由 Unreal Build System (UBT) 自动调用的。这些文件定义了如何构建项目的不同目标,例如游戏、编辑器或独立应用程序。
记录常见的 .Target.cs 文件类型:
常见的 .Target.cs 文件类型
Game Target(游戏目标): 用于定义游戏的构建配置。通常用于项目的最终输出(客户端)。
public class MyGameTarget : TargetRules
{
public MyGameTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
ExtraModuleNames.Add("MyGame");
}
}
Editor Target(编辑器目标): 定义用于在 Unreal Editor 中加载项目的构建配置。用于开发阶段。
public class MyGameEditorTarget : TargetRules
{
public MyGameEditorTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Editor;
ExtraModuleNames.Add("MyGame");
}
}
Server Target(服务器目标): 用于定义专门用于服务器端运行的构建目标,常用于多人游戏的专用服务器。
public class MyGameServerTarget : TargetRules
{
public MyGameServerTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Server;
ExtraModuleNames.Add("MyGame");
}
}
Program Target(程序目标): 用于定义独立的工具或应用程序的构建配置,如插件、导出工具等。此类型通常用于非游戏逻辑的应用程序。
public class MyToolTarget : TargetRules
{
public MyToolTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Program;
ExtraModuleNames.Add("MyTool");
}
}
常见的字段和设置
Type: 指定目标类型,如 TargetType.Game、TargetType.Editor 等。
ExtraModuleNames: 列出该目标需要的模块。
DefaultBuildSettings: 设定默认构建设置版本,如 BuildSettingsVersion.V2。
bCompileAgainstEngine: 指示是否编译引擎相关代码。
bCompileAgainstCoreUObject: 是否编译 CoreUObject 模块。
BuildEnvironment: 控制是否使用共享或独特的构建环境,如 TargetBuildEnvironment.Shared 或 Unique。
文件用途
.Target.cs 文件会在调用 UnrealBuildTool 编译项目时使用,以确定目标的构建过程及所需模块的具体配置。