Objective-C ルール

ルール

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++ ファイルのリスト。hdrs とは異なり、これらは ソースとは別にコンパイルされません。
weak_sdk_frameworks

文字列のリスト(デフォルトは []

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

objc_library

ルールのソースを表示
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, conlyopts, copts, cxxopts, 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 ファイルを 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 と non-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 フレームワークとは異なり、弱くリンクされたフレームワークのシンボルは、実行時に存在しない場合でもエラーを引き起こしません。