# IL2CPP 追加引数のためのプラットフォーム固有の設定

> Supply custom additional arguments to the IL2CPP compiler from code.

プロジェクトに IL2CPP の追加引数が設定されている場合、複数のプラットフォーム用にコンパイルすると、期待通りに動作しないことがあります。特に Linux 用にクロスコンパイルする際にこの問題は顕著です。

IL2CPP の追加の引数がすでに設定されているかどうかを調べるには、以下のいずれかを実行します。

* 環境変数 `IL2CPP_ADDITIONAL_ARGS` が設定されているかどうかを確認します。
* `ProjectSettings/ProjectSettings.asset` で、エディタースクリプトに `additionalIl2CppArgs` という値があるかどうかを確認します。

追加の IL2CPP 引数を設定する方法はすべてのプラットフォームにグローバルに適用されるため、目的のプラットフォーム以外のプラットフォーム用に設定すると、コンパイル時に問題が発生する可能性があることに注意してください。`IPreprocessBuildWithReport` フックを (以下のように) 使用して、IL2CPP 引数が必要なプラットフォームにのみ設定されるようにします。

## IPreprocessBuildWithReport フック

`IPreprocessBuildWithReport` フックを使用して、スクリプトや Build ダイアログをビルドして追加の引数を設定します。

```
class MyCustomPreprocessBuild: IPreprocessBuildWithReport
{
    public int callbackOrder { get { return 0; } }
    public void OnPreprocessBuild(BuildReport report)
    {
        string addlArgs = "";
        if (report.summary.platform == BuildTarget.StandaloneWindows || report.summary.platform == BuildTarget.StandaloneWindows64)
            addlArgs = "--compiler-flags=\"d2ssa-cfg-jt\"";
        UnityEngine.Debug.Log($"Setting Additional IL2CPP Args = \"{addlArgs}\" for platform {report.summary.platform}");
        PlayerSettings.SetAdditionalIl2CppArgs(addlArgs);
    }
}
```

## 追加リソース

* [Linux IL2CPP クロスコンパイラー](/engine/6000.0/manual/scripting/compilation-and-code-reload/backends/il2cpp/linux-il2cpp-crosscompiler.md)
* [Windows ランタイムサポート](/engine/6000.0/manual/scripting/compilation-and-code-reload/backends/il2cpp/il2cpp-windows-runtime-support.md)
* [マネージスタックトレース](/engine/6000.0/manual/scripting/compilation-and-code-reload/backends/il2cpp/il2cpp-managed-stack-traces.md)
