Objective-C ルール

問題を報告 ソースを表示 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

ルール

objc_import

ルールソースを表示
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, includes, package_metadata, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

このルールは、すでにコンパイル済みの静的ライブラリを .a ファイルの形式でカプセル化します。また、objc_library でサポートされている同じ属性を使用して、ヘッダーとリソースをエクスポートすることもできます。

引数

属性
name

名前(必須)

このターゲットの一意の名前。

deps

ラベルのリスト。デフォルトは []

このターゲットが依存するターゲットのリスト。
hdrs

ラベルのリスト。デフォルトは []

このライブラリが公開する C、C++、Objective-C、Objective-C++ ヘッダー ファイルのリスト。依存ルールのソースに含めることができます。

これらのヘッダーはライブラリの公開インターフェースを記述し、このルールまたは依存ルール内のソースによるインクルードに利用可能になります。このライブラリのクライアントに含めることを意図していないヘッダーは、代わりに srcs 属性にリストする必要があります。

モジュールが有効になっている場合、これらはソースとは別にコンパイルされます。

ブール値。デフォルトは False です。

1 の場合、このライブラリに(直接的または間接的に)依存するバンドルまたはバイナリは、srcsnon_arc_srcs にリストされているファイルのすべてのオブジェクト ファイルをリンクします。バイナリで参照されるシンボルが含まれていない場合でもリンクされます。これは、コードがバイナリ内のコードによって明示的に呼び出されない場合に便利です。たとえば、コードが登録されて、サービスから提供されたコールバックを受け取る場合などです。
archives

ラベルのリスト。必須

このターゲットに依存する Objective-C ターゲットに提供される .a ファイルのリスト。
includes

文字列のリスト。デフォルトは [] です。

このターゲットとすべての依存ターゲットに追加する #include/#import 検索パスのリスト。これは、#import/#include ステートメントでワークスペース パス全体を指定しないサードパーティ ライブラリとオープンソース ライブラリをサポートするためです。

パスはパッケージ ディレクトリに対する相対パスとして解釈され、実際のクライアント ルートに加えて、genfiles と bin のルート(blaze-genfiles/pkg/includedirblaze-out/pkg/includedir など)も含まれます。

COPTS とは異なり、これらのフラグはこのルールと、このルールに依存するすべてのルールに追加されます。(注: 依存するルールではありません)。広範囲に影響を及ぼす可能性があるため、十分注意してください。不明な場合は、代わりに COPTS に「-iquote」フラグを追加します。

sdk_dylibs

文字列のリスト。デフォルトは [] です。

リンクする SDK の .dylib ライブラリの名前。たとえば、「libz」や「libarchive」などです。バイナリの依存関係ツリーに C++ または Objective-C++ のソースが含まれている場合、「libc++」は自動的に含まれます。バイナリをリンクする際、そのバイナリの推移的依存関係グラフで指定されたすべてのライブラリが使用されます。
sdk_frameworks

文字列のリスト。デフォルトは [] です。

リンクする SDK フレームワークの名前(「AddressBook」、「QuartzCore」など)。

最上位の Apple バイナリをリンクすると、そのバイナリの推移的依存関係グラフにリストされているすべての SDK フレームワークがリンクされます。

sdk_includes

文字列のリスト。デフォルトは [] です。

このターゲットとすべての依存ターゲットに追加する #include/#import 検索パスのリスト。各パスは $(SDKROOT)/usr/include からの相対パスです。
textual_hdrs

ラベルのリスト。デフォルトは []

このルール内のソースファイルまたはこのライブラリのユーザーによってヘッダーとして含まれる C、C++、Objective-C、Objective-C++ ファイルのリスト。hdrs とは異なり、これらはソースとは別にコンパイルされません。
weak_sdk_frameworks

文字列のリスト。デフォルトは [] です。

弱くリンクする SDK フレームワークの名前。たとえば、「MediaAccessibility」です。通常リンクされた SDK フレームワークとは異なり、弱リンクされたフレームワークのシンボルは、実行時に存在しない場合でもエラーを引き起こしません。

objc_library

ルールソースを表示
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, conlyopts, copts, cxxopts, defines, deprecation, enable_modules, exec_compatible_with, exec_group_compatible_with, exec_properties, features, implementation_deps, includes, linkopts, module_map, module_name, non_arc_srcs, package_metadata, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, stamp, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

このルールは、指定された Objective-C ソースファイルから静的ライブラリを生成します。

引数

属性
name

名前(必須)

このターゲットの一意の名前。

deps

ラベルのリスト。デフォルトは []

このターゲットが依存するターゲットのリスト。
srcs

ラベルのリスト。デフォルトは []

ライブラリ ターゲットを作成するために処理される C、C++、Objective-C、Objective-C++ のソースファイルとヘッダー ファイル、および(`.s`、`.S`、`.asm`)アセンブリ ソースファイルのリスト。これらは、チェックインしたファイルと生成されたファイルです。ソースファイルは Clang で .o ファイルにコンパイルされます。ヘッダー ファイルは、このターゲットの srcs 属性の任意のソースまたはヘッダーによってインクルード / インポートできますが、hdrs のヘッダーやこのルールに依存するターゲットによってインクルード / インポートすることはできません。また、コンパイル済みの .o ファイルを srcs として指定することもできます。提供された .o ファイルのアーキテクチャとビルドのアーキテクチャの整合性を確保し、シンボル リンカー エラーが発生しないように注意してください。
hdrs

ラベルのリスト。デフォルトは []

このライブラリが公開する C、C++、Objective-C、Objective-C++ ヘッダー ファイルのリスト。依存ルールのソースに含めることができます。

これらのヘッダーはライブラリの公開インターフェースを記述し、このルールまたは依存ルール内のソースによるインクルードに利用可能になります。このライブラリのクライアントに含めることを意図していないヘッダーは、代わりに srcs 属性にリストする必要があります。

モジュールが有効になっている場合、これらはソースとは別にコンパイルされます。

ブール値。デフォルトは False です。

1 の場合、このライブラリに(直接的または間接的に)依存するバンドルまたはバイナリは、srcsnon_arc_srcs にリストされているファイルのすべてのオブジェクト ファイルをリンクします。バイナリで参照されるシンボルが含まれていない場合でもリンクされます。これは、コードがバイナリ内のコードによって明示的に呼び出されない場合に便利です。たとえば、コードが登録されて、サービスから提供されたコールバックを受け取る場合などです。
conlyopts

文字列のリスト。デフォルトは [] です。

C ファイルのコンパイラに渡す追加のフラグ。「変数を作成」の置換と Bourne シェルのトークン化の対象となります。これらのフラグは、このターゲットにのみ適用され、依存関係にあるターゲットには適用されません。

生成された Xcode プロジェクトでは、copts の「-I」フラグを使用して指定されたディレクトリ パスが解析され、相対パスの場合は「$(WORKSPACE_ROOT)/」が先頭に追加され、関連する Xcode ターゲットのヘッダー検索パスに追加されます。

copts

文字列のリスト。デフォルトは [] です。

コンパイラに渡す追加のフラグ。「変数を作成」の置換と Bourne シェルのトークン化の対象となります。これらのフラグは、このターゲットにのみ適用され、依存関係にあるターゲットには適用されません。

生成された Xcode プロジェクトでは、copts の「-I」フラグを使用して指定されたディレクトリ パスが解析され、相対パスの場合は「$(WORKSPACE_ROOT)/」が先頭に追加され、関連する Xcode ターゲットのヘッダー検索パスに追加されます。

cxxopts

文字列のリスト。デフォルトは [] です。

Objective-C++ ファイルと C++ ファイルのコンパイラに渡す追加のフラグ。「変数を作成」の置換と Bourne シェルのトークン化の対象となります。これらのフラグは、このターゲットにのみ適用され、依存関係にあるターゲットには適用されません。

生成された Xcode プロジェクトでは、copts の「-I」フラグを使用して指定されたディレクトリ パスが解析され、相対パスの場合は「$(WORKSPACE_ROOT)/」が先頭に追加され、関連する Xcode ターゲットのヘッダー検索パスに追加されます。

defines

文字列のリスト。デフォルトは [] です。

コンパイラに渡す追加の -D フラグ。KEY=VALUE または KEY の形式で、このターゲットのコンパイラ(copts と同様)だけでなく、このターゲットのすべての objc_ 依存関係にも渡されます。「変数を作成」の置換と Bourne シェルのトークン化の対象となります。
enable_modules

ブール値。デフォルトは False です。

clang モジュール サポート(-fmodules 経由)を有効にします。これを 1 に設定すると、システム ヘッダーや他のターゲットを @import できるようになります。 @import UIKit; @import path_to_package_target;
implementation_deps

ラベルのリスト。デフォルトは []

ライブラリ ターゲットが依存する他のライブラリのリスト。deps とは異なり、これらのライブラリのヘッダーとインクルード パス(およびすべての推移的依存関係)は、このライブラリのコンパイルにのみ使用され、それに依存するライブラリには使用されません。implementation_deps で指定されたライブラリは、このライブラリに依存するバイナリ ターゲットで引き続きリンクされます。
includes

文字列のリスト。デフォルトは [] です。

このターゲットとすべての依存ターゲットに追加する #include/#import 検索パスのリスト。これは、#import/#include ステートメントでワークスペース パス全体を指定しないサードパーティ ライブラリとオープンソース ライブラリをサポートするためです。

パスはパッケージ ディレクトリに対する相対パスとして解釈され、実際のクライアント ルートに加えて、genfiles と bin のルート(blaze-genfiles/pkg/includedirblaze-out/pkg/includedir など)も含まれます。

COPTS とは異なり、これらのフラグはこのルールと、このルールに依存するすべてのルールに追加されます。(注: 依存するルールではありません)。広範囲に影響を及ぼす可能性があるため、十分注意してください。不明な場合は、代わりに COPTS に「-iquote」フラグを追加します。

linkopts

文字列のリスト。デフォルトは [] です。

リンカーに渡す追加のフラグ。
module_map

ラベル。デフォルトは None です。

このターゲットのカスタム Clang モジュール マップ。カスタム モジュール マップの使用は推奨されません。ほとんどのユーザーは、Bazel によって生成されたモジュール マップを使用する必要があります。指定した場合、Bazel はこのターゲットのモジュール マップを生成しませんが、指定されたモジュール マップをコンパイラに渡します。
module_name

文字列。デフォルトは "" です。

このターゲットのモジュール名を設定します。デフォルトでは、モジュール名はターゲット パスで、すべての特殊記号が _ に置き換えられます。たとえば、//foo/baz:bar は foo_baz_bar としてインポートできます。
non_arc_srcs

ラベルのリスト。デフォルトは []

自動参照カウント(ARC)を使用しないライブラリ ターゲットを作成するために処理される Objective-C ファイルのリスト。この属性のファイルは srcs 属性のファイルとほぼ同様に扱われますが、ARC を有効にせずにコンパイルされます。
pch

ラベル。デフォルトは None です。

コンパイルされるすべてのソースファイル(arc と非 arc の両方)の先頭に追加するヘッダー ファイル。BUILD ファイルでの pch ファイルの使用は積極的に推奨されておらず、非推奨と見なすべきです。pch ファイルは実際にはプリコンパイルされないため、これはビルド速度の向上ではなく、単なるグローバル依存関係です。ビルドの効率性の観点から見ると、必要なものを必要な場所のソースに直接含める方が実際には優れています。
sdk_dylibs

文字列のリスト。デフォルトは [] です。

リンクする SDK の .dylib ライブラリの名前。たとえば、「libz」や「libarchive」などです。バイナリの依存関係ツリーに C++ または Objective-C++ のソースが含まれている場合、「libc++」は自動的に含まれます。バイナリをリンクする際、そのバイナリの推移的依存関係グラフで指定されたすべてのライブラリが使用されます。
sdk_frameworks

文字列のリスト。デフォルトは [] です。

リンクする SDK フレームワークの名前(「AddressBook」、「QuartzCore」など)。

最上位の Apple バイナリをリンクすると、そのバイナリの推移的依存関係グラフにリストされているすべての SDK フレームワークがリンクされます。

sdk_includes

文字列のリスト。デフォルトは [] です。

このターゲットとすべての依存ターゲットに追加する #include/#import 検索パスのリスト。各パスは $(SDKROOT)/usr/include からの相対パスです。
stamp

ブール値。デフォルトは False です。

textual_hdrs

ラベルのリスト。デフォルトは []

このルール内のソースファイルまたはこのライブラリのユーザーによってヘッダーとして含まれる C、C++、Objective-C、Objective-C++ ファイルのリスト。hdrs とは異なり、これらはソースとは別にコンパイルされません。
weak_sdk_frameworks

文字列のリスト。デフォルトは [] です。

弱くリンクする SDK フレームワークの名前。たとえば、「MediaAccessibility」です。通常リンクされた SDK フレームワークとは異なり、弱リンクされたフレームワークのシンボルは、実行時に存在しない場合でもエラーを引き起こしません。