Mac環境にてビルドエラーが発生しています。
詳しくは下記文章をご確認ください。
別途お送りしているプルリクの影響で行数は変動している可能性があります。
ローカル環境ではBuild.csに CppCompileWarningSettings.UnreachableCodeWarningLevel = WarningLevel.Warning; を記述することでエラー回避できることを確認しています。
また、下記文章ではUE5.7以前では問題にならなかったと書かれていますが、UE5.7.4でも同等の現象が発生していることを確認しています。
UE5.8 Mac ビルドエラー報告: unreachable code (-Werror,-Wunreachable-code)
■ 概要
UE 5.8 の Mac ビルドで使用される Clang 21.x (Xcode 26) では、
-Wunreachable-code 系の警告が -Werror によりエラーに昇格されるようになった。
以下の3ファイルでビルドエラーが発生する。
■ 環境
- Unreal Engine 5.8
- Xcode 26.6 (Apple clang version 21.0.0, clang-2100.1.1.101)
- macOS 26.5, arm64
================================================================================
【1】SsEffectElement.cpp
パス: Source/SpriteStudio6/Private/Data/SsEffectElement.cpp
エラー: -Werror,-Wunreachable-code-return / -Werror,-Wunreachable-code
該当箇所: L8-L27, L55-L59
原因:
__EnumToString_ 関数内で引数 n と比較すべきところを、enum定数を直接
if文の条件に使用している。enum定数が非ゼロの場合、最初のifで即returnし
後続コードが到達不能になる。
現在のコード:
if(SsEffectFunctionType::Base) return "Base";
if(SsEffectFunctionType::Basic) return "Basic";
...
修正案:
if(n == SsEffectFunctionType::Base) return "Base";
if(n == SsEffectFunctionType::Basic) return "Basic";
...
同様に SsVarianceValueRangeType の __EnumToString_ (L55-L59) も同じ問題。
================================================================================
【2】SsAttribute.cpp
パス: Source/SpriteStudio6/Private/Data/SsAttribute.cpp
エラー: -Werror,-Wunreachable-code-return
該当箇所: L431
原因:
StringToTriangle 関数で if/else の両方で return しているため、
関数末尾の return true; に到達しない。
現在のコード (L416-L432):
bool StringToTriangle(const FString& str, FSsTriangle& tri)
{
...
if (str_list.Num() < 3)
{
return false;
}
else {
tri.IdxPo1 = FCString::Atoi(*str_list[0]);
tri.IdxPo2 = FCString::Atoi(*str_list[1]);
tri.IdxPo3 = FCString::Atoi(*str_list[2]);
return true;
}
return true; // ← ここに到達しない
}
修正案:
関数末尾の return true; を削除する。
================================================================================
【3】SsPlayerComponent.cpp
パス: Source/SpriteStudio6/Private/Component/SsPlayerComponent.cpp
エラー: -Werror,-Wunreachable-code-break
該当箇所: L249, L254, L258, L330, L335, L339, L759, L766, L798
原因:
switch文の case 内で return の直後に break がある。
return で関数を抜けるため break に到達しない。
現在のコード例 (L249付近):
case ERelativeTransformSpace::RTS_World:
{
return Trans * GetComponentTransform();
} break; // ← return後のbreakは到達不能
修正案:
return の後の break を削除する。
case ERelativeTransformSpace::RTS_World:
{
return Trans * GetComponentTransform();
}
該当箇所一覧:
- L249: RTS_World (GetSocketTransform 1箇所目)
- L254: RTS_Actor
- L258: RTS_Component
- L330: RTS_World (GetSocketTransform 2箇所目)
- L335: RTS_Actor
- L339: RTS_Component
- L759: ESsPlayerComponentRenderMode switch (CreateSceneProxy)
- L766: ESsPlayerComponentRenderMode switch (CreateSceneProxy)
- L798: ESsPlayerComponentRenderMode switch (CalcBounds)
================================================================================
■ 備考
- Windows ビルド (MSVC) ではこれらは警告にならないため問題なくビルドできる。
- UE 5.7 以前の Mac ビルドでも -Wunreachable-code が -Werror に含まれて
いなかったため問題にならなかった。
- UE 5.8 で Clang の警告設定が厳格化されたことによる影響。
Mac環境にてビルドエラーが発生しています。
詳しくは下記文章をご確認ください。
別途お送りしているプルリクの影響で行数は変動している可能性があります。
ローカル環境ではBuild.csに
CppCompileWarningSettings.UnreachableCodeWarningLevel = WarningLevel.Warning;を記述することでエラー回避できることを確認しています。また、下記文章ではUE5.7以前では問題にならなかったと書かれていますが、UE5.7.4でも同等の現象が発生していることを確認しています。
UE5.8 Mac ビルドエラー報告: unreachable code (-Werror,-Wunreachable-code)
■ 概要
UE 5.8 の Mac ビルドで使用される Clang 21.x (Xcode 26) では、
-Wunreachable-code 系の警告が -Werror によりエラーに昇格されるようになった。
以下の3ファイルでビルドエラーが発生する。
■ 環境
================================================================================
【1】SsEffectElement.cpp
パス: Source/SpriteStudio6/Private/Data/SsEffectElement.cpp
================================================================================
【2】SsAttribute.cpp
パス: Source/SpriteStudio6/Private/Data/SsAttribute.cpp
================================================================================
【3】SsPlayerComponent.cpp
パス: Source/SpriteStudio6/Private/Component/SsPlayerComponent.cpp
================================================================================
■ 備考
いなかったため問題にならなかった。