# 处理针对 IL2CPP 其他参数的特定于平台的设置

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

如果您的项目设置了其他 IL2CPP 参数，则针对多个平台的编译可能无法按预期进行，尤其是在针对 Linux 进行交叉编译时。

要了解是否已设置任何其他 IL2CPP 参数，请执行以下操作之一：

* 检查是否设置环境变量 `IL2CPP_ADDITIONAL_ARGS`。
* 在 `ProjectSettings/ProjectSettings.asset`，检查编辑器脚本是否具有名为 `additionalIl2CppArgs` 的值。

请注意，用于设置其他 IL2CPP 参数的方法全局应用于所有平台，如果针对不需要的平台进行设置，可能会导致编译问题。使用 `IPreprocessBuildWithReport` 钩子（如下所示）可确保仅为需要 IL2CPP 参数的平台设置 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)
