見出し画像

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

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

ルート/←R部/→T部

1. インクルード用に全てのソースファイルをスキャンする (SCAN_ALL_SOURCE_FILES_FOR_INCLUDES)

この設定を有効にすると、依存関係グラフを計算する際に、全てのソースファイルが(例えば、ヘッダー・ファイルなど)インクルード用にスキャンされます。インクルードファイルが変更された場合に、それを含むターゲットが次回ビルドされる際、インクルードファイルが再ビルドされます。通常、C言語のソースファイルなど、特定の種類のファイルのみがスキャンされます。

この設定は、プロジェクトに特殊なタイプのファイルが含まれていて、カスタム・ビルドルールを使用してコンパイルされている場合に便利です。

2. SCRIPTS_FOLDER_PATH

プロダクトのスクリプトを格納するディレクトリを指定します。

3. 基本SDK (SDKROOT)

ビルド中に使用されるベースSDKの名前またはパスです。プロダクトは、指定されたSDK内にあるヘッダーとライブラリに対してビルドされます。このパスは全ての検索パスの前に付加され、環境を介してコンパイラとリンカに渡されます。追加SDKは、追加SDK (ADDITIONAL_SDKS)設定で指定できます。

4. シンボル順序付けフラグ (SECTORDER_FLAGS)

これらのフラグは通常、セグメント内のシンボルの順序付けオプションを指定するために使用され、例えば、「-sectorder」オプションに「ld」を指定します。

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

5. シンボルを個別に編集する (SEPARATE_SYMBOL_EDIT)

この設定を有効にすると、リンク先のプロダクトのシンボルを編集したい際に、「nmedit(1)」を別途呼び出すことで編集が行なわれます。それ以外の場合は、可能であればリンク中に編集が行なわれます。

6. SHARED_FRAMEWORKS_FOLDER_PATH

プロダクトの共有フレームワークを格納するディレクトリを指定します。

7. プリコンパイル済ヘッダーキャッシュパス (SHARED_PRECOMPS_DIR)

ビルド時にプリコンパイル済プレフィックス・ヘッダーファイルを配置するパスです。デフォルトは「$(OBJROOT)/SharedPrecompiledHeaders」です。共通の場所を使用することで、プリコンパイル済ヘッダーを複数のプロジェクト間で共有できます。

8. インストールをスキップする (SKIP_INSTALL)

有効にすると、配置場所がアクティブになっていても、ビルド済みのプロダクトをインストールしないようになります。

9. SRCROOT

ターゲットのソースファイルを含むディレクトリを指定します。

10. 文字列ファイルの出力エンコーディング (STRINGS_FILE_OUTPUT_ENCODING)

文字列ファイルに使用するエンコーディングを指定します(デフォルトでは16ビットUnicodeが出力される)。値は、NSStringが認識する数値の1つなどNSStringEncodingか、CFStringが認識するIANA文字セット名を指定できます。ファイルを指定したエンコーディングに変換できなかった場合、この操作は失敗します。

11. 追加の除去フラグ (STRIPFLAGS)

ビルドのリンクされたプロダクトを除去する際に渡す追加のフラグです。

12. リンクされたプロダクトを除去する (STRIP_INSTALLED_PRODUCT)

有効にすると、デプロイメントの後処理を行なう際に、ビルドのリンクされたプロダクトからシンボルが除去されます。

13. PNGファイルのテキスト・メタデータを削除する (STRIP_PNG_TEXT)

PNGファイル内のテキストチャンク形式のメタデータは削除され、ディスク上の占有面積を削減できます。

14. 除去スタイル (STRIP_STYLE)

ビルドのリンクされたプロダクトに対して実行するシンボル除去のレベルです。デフォルト値はターゲットのプロダクトタイプによって定義されます。

  • 「all, -s」:全てのシンボル:バイナリを完全に除去し、シンボルテーブルと再配置情報を削除します。
  • 「non-global, -x」:非グローバルシンボル:非グローバルシンボルは除去しますが、外部シンボルは保存します。
  • 「debugging, -S」:デバグシンボル:デバグシンボルは除去しますが、ローカルシンボルとグローバルシンボルは保存されます。

15. Swiftシンボルを除去する (STRIP_SWIFT_SYMBOLS)

除去スタイル (STRIP_STYLE)設定で指定されたシンボル除去のレベルを調整して、ビルドのリンクされたプロダクトが除去された際に、全てのSwiftシンボルが削除されます。

16. サポートされるプラットフォーム (SUPPORTED_PLATFORMS)

ベースSDKが使用可能なサポート対象プラットフォームのリストです。この設定は、異なるSDKを使用して複数のプラットフォーム用にプロダクトをビルドする場合に、使用します。

17. Mac Catalystをサポートする (SUPPORTS_MACCATALYST)

Mac Catalyst用に、このターゲットのビルドをサポートします。

18. テキストベースのInstallAPIをサポートする (SUPPORTS_TEXT_BASED_API)

有効にすると、ターゲットが「テキストベースのInstallAPI」をサポートしているとを示すことを可能にし、installビルド中に、その生成をできるようにします。

19. アクティブなコンパイル条件 (SWIFT_ACTIVE_COMPILATION_CONDITIONS)

条件付きコンパイル式を有効にする、コンパイル条件のリストです。

20. コンパイルモード (SWIFT_COMPILATION_MODE)

この設定は、モジュール内のSwiftファイルを再ビルドする方法を制御します。

  • 増分:モジュール内の古いSwiftソースファイルのみを再ビルドし、必要に応じて複数のコンパイラプロセスを実行します。
  • モジュール全体:モジュール内の全てのSwiftソースファイルを、単一のコンパイラプロセスで常に再ビルドします。

21. 安全性チェックを無効にする (SWIFT_DISABLE_SAFETY_CHECKS)

最適化時にランタイム安全性チェックを無効にします。

22. メモリへの排他的アクセス (SWIFT_ENFORCE_EXCLUSIVE_ACCESS)

実行時に排他的アクセスを強制します。

23. パスをインポートする (SWIFT_INCLUDE_PATHS)

Swiftコンパイラが、追加Swiftモジュール用に、検索するパスのリストです。

24. Objective-C互換性ヘッダーをインストールする (SWIFT_INSTALL_OBJC_HEADER)

フレームワークの場合、ブリッジされたSwiftクラスを記述するObjective-C互換性ヘッダーをパブリックヘッダー・フォルダーパス (PUBLIC_HEADERS_FOLDER_PATH)にインストールして、フレームワークを使ってObjective-Cコードからアクセスできる様にします。デフォルトは「YES」です。

25. Objective-Cブリッジング・ヘッダー (SWIFT_OBJC_BRIDGING_HEADER)

Swiftで公開されるObjective-Cインターフェースを定義するヘッダーへのパスです。

26. Objective-C生成インターフェイスヘッダー名 (SWIFT_OBJC_INTERFACE_HEADER_NAME)

Objective-Cの#import文で使用するためにSwiftコンパイラが生成するヘッダーに使用する名前です。

27. 最適化レベル (SWIFT_OPTIMIZATION_LEVEL)

  • 「-Onone」:なし:最適化せずにコンパイルします。
  • 「-O」:速度の最適化
  • 「-Osize」:サイズの最適化
  • 「-O -whole-module-optimization」:モジュール全体の最適化

28. ブリッジング・ヘッダーをプリコンパイルする (SWIFT_PRECOMPILE_BRIDGING_HEADER)

全体的なビルド時間を短縮するために、(使用する場合)Objective-Cブリッジングヘッダー用にプリコンパイル済ヘッダーを生成します。

29. リフレクション・メタデータレベル (SWIFT_REFLECTION_METADATA_LEVEL)

この設定は、Swiftコンパイラが出力するリフレクション・メタデータのレベルを制御します。

  • 全て:Swift構造体やクラスの格納されたプロパティ、Swiftのenumケース、それらの名前に関する型情報は、Memory Graph Debuggerでのリフレクションや解析のためにバイナリに出力されます。
  • 「-disable-reflection-names」:名前なし:保存されているプロパティとケースに関する型情報のみを、名前を省略してバイナリに出力します。
  • 「-disable-reflection-metadata」:なし:リフレクション・メタデータはバイナリに出力されません。Memory Graph DebuggerでのSwift型に関係するメモリの問題を検出する精度が低下し、Swiftコードでのリフレクションが、プロパティやenumケースなどの型の子を検出できない可能性があります。

30. 警告を抑制する (SWIFT_SUPPRESS_WARNINGS)

警告を出力しません。

31. Swift 3 @objc推論 (SWIFT_SWIFT3_OBJC_INFERENCE)

Swiftコンパイラが@objcの宣言をどのように推測するかを制御します。

32. 警告をエラーとして扱う (SWIFT_TREAT_WARNINGS_AS_ERRORS)

全ての警告をエラーとして扱います。

33. ビルドプロダクトパス (SYMROOT)

ビルドを実行する際に、全てのプロダクトが配置されるパスです。通常、このパスはターゲットごとに設定されるのではなく、プロジェクトごと、あるいはユーザーごとに設定されます。デフォルトでは、「$(PROJECT_DIR)/build」 に設定されています。

34. システムフレームワーク検索パス (SYSTEM_FRAMEWORK_SEARCH_PATHS)

これは、C、Objective-C、C++、C++、Objective-C++をコンパイルする際に、インクルードまたはインポートしたヘッダーファイルの両方用にコンパイラによって、そしてプロダクトが使用するフレームワーク用リンカによって、検索されるシステムフレームワークを格納するフォルダへのパスのリストです。順序は、優先順位の高いものから低いものです。パスは空白で区切られているので、空白を含むパスは適切に引用符で囲む必要があります。この設定は、検索パスがコンパイラに渡され、システム検索パスで見つかったヘッダーに対する警告が殆ど表示されないことを除いては、フレームワーク検索パス (FRAMEWORK_SEARCH_PATHS)と非常に似ています。コンパイラがシステム・フレームワーク検索パスの概念をサポートしていない場合、検索パスは、フレームワーク検索パス (FRAMEWORK_SEARCH_PATHS)で定義されている既存のフレームワーク検索パスに追加されます。

35. システムヘッダー検索パス (SYSTEM_HEADER_SEARCH_PATHS)

これは、C、Objective-C、C++、C++、Objective-C++をコンパイルする際に、インクルードまたはインポートしたヘッダーファイルの両方用にコンパイラによって検索されるフォルダへのパスのリストです。順序は、優先順位の高いものから低いものです。パスは空白で区切られているので、空白を含むパスは適切に引用符で囲む必要があります。この設定は、検索パスがコンパイラに渡され、システム検索パスで見つかったヘッダーに対する警告が殆ど表示されないことを除いては、ヘッダー検索パス (HEADER_SEARCH_PATHS)と非常に似ています。コンパイラがシステムヘッダー検索パスの概念をサポートしていない場合、検索パスは、ヘッダー検索パス (HEADER_SEARCH_PATHS)で定義されている既存のヘッダー検索パスに追加されます。

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