You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unreal Engine 5.1设置CppStandard为C++20编译失败求助

解决Unreal Engine 5.1 Linux下C++20编译错误的方案

问题根源

UE5.1引擎核心代码SHMath.h中存在匿名枚举间的算术运算,C++20标准将这类操作标记为废弃警告,而UE默认会把警告当作错误处理,最终导致编译失败。由于你未从源码编译引擎,只能通过项目层面的配置规避该问题。

具体解决步骤

1. 修改项目的*.Build.cs文件

在项目的Build.cs中,除了设置C++20标准,还要添加针对该特定警告的禁用规则:

using UnrealBuildTool;

public class YourProjectName : ModuleRules
{
    public YourProjectName(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
        
        PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });

        // 设置C++20标准
        CppStandard = CppStandardVersion.Cpp20;

        // 启用编译器警告覆盖,禁用目标警告
        bOverrideCompilerWarnings = true;
        // 禁用匿名枚举转换的废弃警告
        AddCompilerFlags("-Wno-deprecated-anon-enum-enum-conversion");

        // 若单独禁用警告无效,全局关闭警告转错误
        bEnableWarningsAsErrors = false;
    }
}

2. 调整Rider的检查规则

打开Rider的File > Settings > Languages & Frameworks > C/C++ > Inspection Settings,找到Deprecated anonymous enum-enum conversion检查项,将其等级改为「Warning」或「Do not show」,避免IDE误报错误。

3. 验证构建

修改完成后,可直接在Rider中点击构建按钮,或在终端运行UE构建命令:

./YourProjectName.sh -build

补充说明

如果之前修改BuildConfig.xml无效,确保你修改的是项目目录下Config文件夹中的BuildConfig.xml,而非引擎目录下的文件。可添加以下内容全局禁用警告转错误:

<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
    <BuildConfiguration>
        <bWarningsAsErrors>false</bWarningsAsErrors>
    </BuildConfiguration>
</Configuration>

内容的提问来源于stack exchange,提问作者Koronis Neilos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 17:30:21