ドキュメント

Unity Engine

Unity Engine

追加の IL2CPP コンパイラー引数

コードから IL2CPP コンパイラーにカスタムの追加引数を提供します。
読み終わるまでの所要時間 6 分最終更新 3日前

PlayerSettings.SetAdditionalIl2CppArgs
API を使用するか
IL2CPP_ADDITIONAL_ARGS
環境変数を設定することで、IL2CPP コンパイラーに追加の引数を指定できます。
注意
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
を複数回呼び出すと、前に指定したフラグが上書きされます。このメソッドに空の文字列を渡し、以前に指定した追加引数を削除します。
有効なコンパイラーフラグとリンカーフラグは、そのプラットフォームで IL2CPP が使用する基本的な C++ コンパイラー (msvc または clang) によって異なります。有効なコンパイラーおよびリンカーオプションのリストについては、msvc コンパイラー、リンカーオプション、または clang コンパイラーおよびリンカーオプションに関するサードパーティーのドキュメントを参照してください。

引数が設定されているか確認

プロジェクトに追加の IL2CPP 引数が設定されている場合は、特に Linux のクロスコンパイル時に、複数のプラットフォーム用にコンパイルが期待通りに動作しないことがあります。
追加の IL2CPP 引数がすでに設定されているかどうかを確認するには、以下のいずれかを実行します。
  • 環境変数
    IL2CPP_ADDITIONAL_ARGS
    が設定されているかどうかを確認します。
  • ProjectSettings/ProjectSettings.asset
    、Editor スクリプトに
    additionalIl2CppArgs
    という値があるかどうかをチェックします。
重要
追加の IL2CPP 引数はすべてのプラットフォームにグローバルに適用されるため、目的のプラットフォーム以外のプラットフォームに設定するとコンパイルの問題が生じる可能性があります。
IPreprocessBuildWithContext
フックを使用して、IL2CPP 引数が必要なプラットフォームにのみ設定されていることを確認します。

IPreprocessBuildWithContext hook

IPreprocessBuildWithContext
コールバックを使用してスクリプトをビルドするか、ビルドダイアログを使用して追加の引数を設定できます。
クラス 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); }}

追加リソース