見出し画像

プログラミングガイド「ビルド設定リファレンス」(O部)

Build settings reference」の私家版和訳です。

ルート/←N部/→P部

1. OBJECT_FILE_DIR

バリアントオブジェクトファイルが置かれるディレクトリを部分的に識別します。完全な仕様は、このビルド設定のバリアントを使用して計算されます。

2. 中間ビルドファイルパス (OBJROOT)

ビルド中に中間ファイルが配置されるパス。中間ファイルには、生成されたソースやオブジェクトファイルなどが含まれます。ビルドフェーズShell scriptでも、ここにファイルを配置したりアクセスしたりすることができます。通常、このパスはターゲットごとに設定されるのではなく、プロジェクトやユーザーごとに設定されます。デフォルトでは、「$(PROJECT_DIR)/build」に設定されています。

3. アクティブアーキテクチャのみをビルドする (ONLY_ACTIVE_ARCH)

有効にすると、アクティブなアーキテクチャのみがビルドされます。この設定は、実行宛先「Generic Device」など、特定のアーキテクチャを定義していない実行宛先を使用してビルドする場合には無視されます。

4. オンデマンドリソースの初期インストールタグ (ON_DEMAND_RESOURCES_INITIAL_INSTALL_TAGS)

アプリケーションと一緒にダウンロードしてインストールする、初期のオンデマンドリソースタグのセットを定義します。

5. オンデマンドリソースのプリフェッチ順 (ON_DEMAND_RESOURCES_PREFETCH_ORDER)

アプリがインストールされると、ダウンロードされるべきオンデマンドリソースタグのセットが定義されます。これらのタグは、アプリケーションの初期インストール後にダウンロードされ、リストで提供されるタグが最初から最後までの順にダウンロードされます。

6. OpenCLアーキテクチャ (OPENCL_ARCHS)

プロダクトがビルドされるアーキテクチャのリストです。これは通常、プラットフォームが提供する事前定義のビルド設定に設定されています。

7. 自動ベクトライザー (OPENCL_AUTO_VECTORIZE_ENABLE)

CPUのOpenCLカーネルを自動ベクトル化します。この設定は、CPUに対してのみ有効です。これにより、CPUとGPUを跨いで移植性と性能の高い単一のカーネルを書くことが可能になります。

8. OpenCLコンパイラ・バージョン (OPENCL_COMPILER_VERSION)

プラットフォームでサポートされているOpenCL Cコンパイラのバージョンです。

9. デノルムをゼロに丸める (OPENCL_DENORMS_ARE_ZERO)

このオプションは、単精度と倍精度の非正規化数をどのように扱うかを制御します。ビルドオプションとして指定された場合、単精度非正規化数はゼロに丸められます;オプションの倍精度拡張がサポートされている場合、倍精度非正規化数もゼロに丸められます。これはパフォーマンスのヒントであり、デバイスが単精度(または倍精度)の非正規化数をサポートしている場合には、OpenCLコンパイラは、デノルムをゼロに丸めないように選択することができます。

このオプションは、デバイスが単精度の非正規化数をサポートしていない場合、例えば、「CL_DEVICE_SINGLE_FP_CONFIG」でCL_FP_DENORMビットが設定されていない場合、単精度の数値は無視されます。

このオプションは、デバイスが倍精度をサポートしていない場合や、倍精度はサポートしているが倍精度の非正規化数はサポートしていない場合、例えば、「CL_DEVICE_DOUBLE_FP_CONFIG」でCL_FP_DENORMビットが設定されていない場合、倍精度の数値は無視されます。

このフラグは、スカラとベクトルの単精度浮動小数点変数と、プログラム内でのこれらの浮動小数点変数の計算にのみ適用されます。画像オブジェクトからの読み書きには適用されません。

10. 倍精度を単精度として (OPENCL_DOUBLE_AS_SINGLE)

倍精度浮動小数点式を単精度浮動小数点式として扱います。このオプションは、GPUでのみ使用できます。

11. IEEEコンプライアンスを緩和する (OPENCL_FAST_RELAXED_MATH)

これにより、IEEE754標準に違反する可能性のある浮動小数点の、およびOpenCL数値コンプライアンス要件の7.4節で定義されている単精度浮動小数点の、9.3.9節で定義されている倍精度浮動小数点の、およびOpenCL 1.1仕様の7.5節で定義されているエッジケース動作の、浮動小数点演算の最適化が可能になります。

これは、パフォーマンスの最適化を目的としています。

このオプションを指定すると、プリプロセッサマクロ「__FAST_RELAXED_MATH__」がOpenCLプログラムで定義されます。

12. MADを使用する (OPENCL_MAD_ENABLE)

「a * b + c」をmad命令で置き換えることができます。madは「a * b + c」の計算精度を低下させます。例えば、いくつかのOpenCLデバイスはmadを実装し、cに追加する前に「a * b」の結果を切り捨てます。

これは、パフォーマンスの最適化を目的としています。

13. 最適化レベル (OPENCL_OPTIMIZATION_LEVEL)

  • 「-O0」:なし:最適化しません。この設定では、コンパイラの目的は、コンパイルのコストを削減し、デバグで期待される結果が得られるようにすることです。ステートメントは独立しています:ステートメント間のブレークポイントでプログラムを停止すると、任意の変数に新しい値を代入したり、関数内の他のステートメントにプログラムカウンタを変更したりして、ソースコードから期待される結果を正確に得ることができます。
  • 「-O, -O1」:Fast:コンパイルの最適化には多少時間がかかり、大きな関数の場合はより多くのメモリが必要になります。この設定では、コンパイラは、コンパイル時間を大幅に消費する最適化を実行せずに、コードサイズと実行時間を削減しようとします。Appleのコンパイラでは、最適化の際に厳格なエイリアシング、ブロック再配置、ブロック間スケジューリングはデフォルトでは無効になっています。
  • 「-O2」:Faster:コンパイラは、サポートされているほぼ全ての最適化を実行します。この設定では、コンパイラはループの展開や関数のインライン化、レジスタのリネームを行いません。「Fast」設定と比較して、この設定はコンパイル時間と生成されるコードのパフォーマンスの両方を向上させます。
  • 「-O3」:Fastest:「Faster」設定で指定された全ての最適化を有効にし、関数インライン化とレジスタリネームオプションも有効にします。この設定はバイナリのサイズを大きくする可能性があります。
  • 「-Os」:Fastest、最小:サイズに合わせて最適化します。この設定では、通常はコードサイズを大きくしない「Fastest」最適化を全て有効にします。また、コードサイズを小さくするように設計された最適化をさらに実行します。

14. OpenCLのその他のフラグ (OPENCL_OTHER_BC_FLAGS)

コンパイラに渡す追加フラグのスペース区切りのリスト。スペースを含む可能性のあるパス名など、スペースや特殊文字を含む引数は必ずバックスラッシュでエスケープしてください。Xcodeが特定のコンパイラ・フラグ用UIを提供していない場合は、この設定を使用します。

15. OpenCLプリプロセッサ・マクロ (OPENCL_PREPROCESSOR_DEFINITIONS)

「foo」または「foo=bar」形式のプリプロセッサ・マクロのスペース区切りリストです。

16. 順序ファイル (ORDER_FILE)

関数やデータの配置順序を変更するファイルへのパスです。

出力ファイルの各セクションについて、順序ファイルで指定されるセクション内のシンボルは、そのセクションの先頭に移動され、順序ファイルと同じ順序でレイアウトされます。順序ファイルは、1行に1つのシンボル名を持つテキストファイルです。「#」で始まる行はコメントです。シンボル名の前には、オプションでオブジェクトファイルのリーフ名とコロンを付けることができます(例えば、「foo.o:_foo」のように)。これは、複数のファイルに存在する静的な関数やデータの場合に便利です。シンボル名の前には、オプションでアーキテクチャをつけることもできます(たとえば、「ppc:_foo」や「ppc:foo.o:_foo」など)。これにより、複数のアーキテクチャで動作する一つの順序ファイルを作成できます。リテラルC文字列は、順序ファイル内の文字列を引用することで、順序を指定できます(例えば、「"Hello, world\n"」)。

一般的に、デバッガや開発環境では順序ファイルを指定すべきではありません。リンクされたバイナリがデバッガで読みにくくなる為です。ReleaseまたはDeployment構成でのみ使用してください。

17. 実行専用として保存する (OSACOMPILE_EXECUTE_ONLY)

出力スクリプトを実行専用の形式で保存します;スクリプトは実行できますが、Script EditorやXcodeでは開くことができません。このオプションをオフにすると、ユーザーはスクリプトを開いて元のスクリプトソースを表示できます。

18. その他のCフラグ (OTHER_CFLAGS)

CおよびObjective-Cファイル用にコンパイラに渡す追加フラグのスペース区切りリストです。スペースを含む可能性のあるパス名など、スペースや特殊文字を含む引数は必ずバックスラッシュでエスケープしてください。Xcodeが特定のCまたはObjective-Cコンパイラ・フラグ用UIを提供していない場合は、この設定を使用します。

19. その他のコード署名フラグ (OTHER_CODE_SIGN_FLAGS)

「codesign(1)」に渡す、追加オプションのリストです。

20. その他のC++フラグ (OTHER_CPLUSPLUSFLAGS)

C++とObjective-C++ファイル用にコンパイラに渡す追加フラグのスペース区切りリストです。スペースを含む可能性のあるパス名など、スペースや特殊文字を含む引数は必ずバックスラッシュでエスケープしてください。XcodeがC++またはObjective-C++コンパイラ・フラグ用UIを提供していない場合は、この設定を使用します。

21. その他のIIG Cフラグ (OTHER_IIG_CFLAGS)

clangのiig呼び出しに渡す追加フラグのスペース区切りリストです。スペースを含む可能性のあるパス名など、スペースや特殊文字を含む引数は必ずバックスラッシュでエスケープしてください。Xcodeが特定のiigフラグ用UIを提供していない場合は、この設定を使用します。

22. その他のIIGフラグ (OTHER_IIG_FLAGS)

iigコンパイラに渡す追加フラグのスペース区切りリストです。スペースを含む可能性のあるパス名など、スペースや特殊文字を含む引数は必ずバックスラッシュでエスケープしてください。Xcodeが特定のiigフラグ用UIを提供していない場合は、この設定を使用します。

23. その他のリンカーフラグ (OTHER_LDFLAGS)

この設定で定義されたオプションは、リンカの呼び出しに渡されます。

24. その他のライブラリアン・フラグ (OTHER_LIBTOOLFLAGS)

この設定で定義されたオプションは、静的ライブラリの生成に使用されるアーカイブライブラリアンの全ての呼び出しに渡されます。

25. その他のMiGフラグ (OTHER_MIGFLAGS)

migに渡す追加フラグのスペース区切りリストです。スペースを含む可能性のあるパス名など、スペースや特殊文字を含む引数は必ずバックスラッシュでエスケープしてください。Xcodeがmigフラグ用UIを提供していない場合は、この設定を使用します。

26. その他のOSACompileフラグ (OTHER_OSACOMPILEFLAGS)

osacompileに渡す追加フラグのスペース区切りリストです。スペースを含む可能性のあるパス名など、スペースや特殊文字を含む引数は必ずバックスラッシュでエスケープしてください。Xcodeが特定のosacompileフラグ用UIを提供していない場合は、この設定を使用します。

27. その他のRezフラグ (OTHER_REZFLAGS)

Rezコンパイラに渡す追加フラグのスペース区切りリストです。スペースを含む可能性のあるパス名など、スペースや特殊文字を含む引数は必ずバックスラッシュでエスケープしてください。Xcodeが特定のRezフラグ用UIを提供していない場合は、この設定を使用します。

28. その他のSwiftフラグ (OTHER_SWIFT_FLAGS)

Swiftコンパイラに渡す追加フラグのリストです。

29. その他のテキストベースのInstallAPIフラグ (OTHER_TAPI_FLAGS)

この設定で定義されたオプションは、「テキストベースのInstallAPI」ツールの呼び出しに渡されます。

この記事が気に入ったらサポートをしてみませんか?