Objective-C ルール

問題を報告する ソースを表示 ナイトリー · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ルール

objc_import

ルールソースを表示
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, includes, 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++ ファイルのリスト。hdr とは異なり、これらはソースから別にコンパイルされません。
weak_sdk_frameworks

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

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

objc_library

ルールソースを表示
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, implementation_deps, includes, linkopts, module_map, module_name, non_arc_srcs, 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 ファイルを src として指定することもできます。シンボル リンカーのエラーが発生しないように、提供された .o ファイルのアーキテクチャとビルドのアーキテクチャの整合性を確認してください。
hdrs

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

このライブラリによって公開され、依存関係のあるルールのソースによって含められる C、C++、Objective-C、Objective-C++ ヘッダー ファイルのリスト。

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

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

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

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

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

コンパイラに渡す追加のフラグ。「変数を作成」の置換と 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++ ファイルのリスト。hdr とは異なり、これらはソースから別にコンパイルされません。
weak_sdk_frameworks

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

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