Дополнительные аргументы компилятора IL2CPP
Вы можете предоставить дополнительные аргументы для компилятора IL2CPP, используя PlayerSettings.SetAdditionalIl2CppArgs API или установив переменную среды IL2CPP_ADDITIONAL_ARGS.
ПредупреждениеПередача дополнительных аргументов IL2CPP компилятор является экспериментальной функцией для отладки и оптимизации IL2CPP генерации кода в сложных проектах. диагностические переключатели, он предназначен для использования передовыми разработчиками в координации с Unity аргументы передаются непосредственно к сотрудникам по поддержке. C++ компилятор без интерпретации, что означает высокий риск разрушения сборок. Unity оставляет за собой право изменять или удалять эту функцию без уведомления.
В следующей таблице показаны аргументы, которые можно использовать для предоставления дополнительных флагов компилятору IL2CPP:
| Аргумент | Описание |
|---|---|
--compiler-flags="<flags>" |
Передаёт дополнительные флаги компилятору C++. Замените <flags> на желаемые флаги. Например, --compiler-flags=\"COMPILER_FLAG_1 COMPILER_FLAG_2\" передает флаги компилятора COMPILER_FLAG_1 и COMPILER_FLAG_2 компилятору C++. |
--linker-flags="<flags>" |
Передаёт линкеру дополнительные флаги. Замените <flags> на желаемые флаги. Например, --linker-flags="\LINKER_FLAG_1 LINKER_FLAG_2\" передает линкеру флаги LINKER_FLAG_1 и LINKER_FLAG_2. |
Несколько аргументов должны быть разделены пробелами следующим образом:
PlayerSettings.SetAdditionalIl2CppArgs("--compiler-flags=\"COMPILER_FLAG_1 COMPILER_FLAG_2\" --linker-flags="\LINKER_FLAG_1 LINKER_FLAG_2\"");
Примечание: Вызов SetAdditionalIl2CppArgs более одного раза перезапишет любые флаги, предоставленные ранее. Передайте пустую строку этому методу, чтобы удалить любые дополнительные аргументы, предоставленные ранее.
Действительные флаги компилятора и линкера различаются в зависимости от платформы, в зависимости от того, какой базовый компилятор C++ (msvc или clang) использует IL2CPP на этой платформе. Чтобы получить список действительных параметров компилятора и линкера, обратитесь к соответствующей сторонней документации для msvc компилятора, линкера параметров или clang компилятора и линкера параметров.
Проверить, установлены ли аргументы
Если в вашем проекте установлены дополнительные аргументы IL2CPP, то компиляция для нескольких платформ может работать не так, как ожидалось, особенно при перекрестной компиляции для Linux.
Чтобы проверить, установлены ли уже дополнительные аргументы IL2CPP, выполните одно из следующих действий.
- Проверьте, установлена ли переменная среды
IL2CPP_ADDITIONAL_ARGS. - В
ProjectSettings/ProjectSettings.assetпроверьте, есть ли в скрипте Редактора значениеadditionalIl2CppArgs.
Важно: Дополнительные аргументы IL2CPP применяются глобально ко всем платформам, что может вызвать проблемы при компиляции, если они установлены для платформы, отличной от желаемой. Используйте петлю IPreprocessBuildWithContext, чтобы убедиться, что аргументы IL2CPP установлены только для платформы, которая требует их.
IPreprocessBuildWithContext крючок
Вы можете использовать обратный вызов IPreprocessBuildWithContext для сборки скриптов или диалог Build для установки дополнительных аргументов:
class MyCustomPreprocessBuild: IPreprocessBuildWithContext
{
public int callbackOrder { get { return 0; } }
public void OnPreprocessBuild(BuildCallbackContext ctx)
{
string addlArgs = "";
if (ctx.Report.summary.platform == BuildTarget.StandaloneWindows || ctx.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 кросс-компилятор
- Управляемые трассировки стеков
- Обсуждения: Как добавить флаги компилятора или линкера для вызова IL2CPP