Objective-C ルール

ルール

j2objc_library

j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

このルールでは、J2ObjC を使用して Java ソースを変換します。 ファイルを Objective-C にエクスポートすると、objc_library や objc_binary の依存関係として使用できます。 できます。J2ObjC 自体について詳しくは、 J2ObjC サイト

カスタム J2ObjC トランスパイル フラグは、ビルドフラグを使用して指定できます。 --j2objc_translation_flags をコマンドラインで使用します。

j2objc_library ターゲットに含まれる翻訳ファイルは、 デフォルトのコンパイル構成でコンパイルします。 属性にコンパイル オプションが指定されていない objc_library ルール。

さらに、生成されたコードはソースレベルではなくターゲット レベルで重複排除されます。もし 同じ Java ソースファイルを含む異なる Java ターゲットを使用すると、重複シンボル エラーが表示されることがあります。 表示されます。この問題を解決するための正しい方法は、共有 Java ソースファイルを 共通のターゲットが存在します。

引数

属性
name

Name; required

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

deps

List of labels; optional

j2objc_libraryjava_library、 次を含む java_import ターゲットと java_proto_library ターゲット Objective-C にトランスパイルされる Java ファイル。

リーチできるすべての「java_library」および「java_import」目標 exportsdepsruntime_deps を通じて推移的 変換とコンパイルが行われます。現時点では、Java で生成されたファイルは srcjar のないアノテーション処理または java_import ターゲット あります。

J2ObjC 変換の動作は、ソース Java ソースのタイプによって異なる されます。含まれる .java ソースファイルごとに、 java_librarysrcs(対応する .h および .m ソースファイル) 生成されます。srcs 個に含まれるソース JAR ごとに java_library または srcjar/java_import、 対応する .h および .m ソースファイルが、その jar のすべてのコードとともに生成されます。

ユーザーは、J2ObjC で生成されたヘッダー ファイルをコードにインポートできます。インポート パスは、 これらのファイルは、元の Java アーティファクトのルート相対パスです。たとえば //some/package/foo.java のインポート パスは some/package/foo.h です。 //some/package/bar.srcjarにはsome/package/bar.h

proto_library ルールがこのルールの推移的クロージャに含まれている場合、J2ObjC proto も バイナリレベルで生成、コンパイル、リンクできますproto の場合 //some/proto/foo.proto。ユーザーは import を使用して生成されたコードを参照できます。 パス some/proto/foo.j2objc.pb.h

entry_classes

List of strings; optional

変換された ObjC が直接参照される Java クラスのリスト 読み取りますフラグ --j2objc_dead_code_removal がオンの場合、この属性は必須です。Java クラスは、 Java 言語仕様。 フラグ --j2objc_dead_code_removal が指定されている場合、エントリクラスのリスト 推移的に収集され、デッドコード分析を行うためのエントリポイントとして使用されます。 未使用のクラスは、最終的な ObjC App Bundle から削除されます。
jre_deps

List of labels; optional

この API によって変換されるすべての Java コードに必要な追加の JRE エミュレーション ライブラリのリスト j2objc_library ルール。デフォルトでは、JRE のコア機能のみがリンクされています。

objc_import

objc_import(name, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, features, includes, licenses, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, visibility, weak_sdk_frameworks)

このルールは、コンパイル済みの静的ライブラリを .a ファイル。また、同じ Cloud Storage バケットを使用して、 objc_library でサポートされている属性。

引数

属性
name

Name; required

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

hdrs

List of labels; optional

公開されている C、C++、Objective-C、Objective-C++ のヘッダー ファイルのリスト 依存するルールのソースに含まれている必要があります。

これらのヘッダーは、ライブラリの公開インターフェースを記述したものです。 ルールに含まれているか、または独立している できます。このライブラリのクライアントに含めることを想定していないヘッダー srcs 属性で指定する必要があります。

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

Boolean; optional; default is False

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

List of labels; required

Objective-C ターゲットに指定された .a ファイルのリスト このターゲットに依存します。
includes

List of strings; optional

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

パスはパッケージ ディレクトリからの相対パスとして解釈され、 genfiles と bin ルート(例: blaze-genfiles/pkg/includedirblaze-out/pkg/includedir など)は、 あります。

COPTS とは異なり、以下のフラグはこのルールに追加されます。 依存するすべてのルールについて学習しました。(注: コンテナが依存するルールではありません)。行動 広範囲に影響が及ぶ可能性があるため、細心の注意を払ってください。判断に迷う場合は、 「-iquo」COPTS に渡します。

sdk_dylibs

List of strings; optional

リンクする SDK .dylib ライブラリの名前。例: 「libz」または 「libarchive」。 "libc++"バイナリに C++ コードまたは 依存関係ツリー内の Objective-C++ ソース。バイナリをリンクするときは、 そのバイナリの推移的依存関係グラフで指定されたすべてのライブラリが、 分析できます
sdk_frameworks

List of strings; optional

リンクする SDK フレームワークの名前(「AddressBook」、「QuartzCore」など)。「UIKit」および "基盤"iOS、tvOS、visionOS、 サポートしていますmacOS の場合は、「Foundation」のみ常に含まれます。

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

sdk_includes

List of strings; optional

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

List of labels; optional

サポートされている C、C++、Objective-C、および Objective-C++ ファイルのリスト このルールのソースファイル、またはこのルールの ライブラリです。hdrs とは異なり、これらは SDK とは別にコンパイル あります。
weak_sdk_frameworks

List of strings; optional

弱いリンクを設定する 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, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, runtime_deps, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

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

引数

属性
name

Name; required

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

deps

List of labels; optional

最終的なバンドルを形成するためにリンクされるターゲットのリスト。
srcs

List of labels; optional

C、C++、Objective-C、Objective-C++ のソースとヘッダーのリスト ファイル、および/または(`.s`、`.S`、`.asm`)アセンブリ ソースファイル。 指定します。 これらは、チェックインしたファイルと、生成されたすべてのファイルです。 ソースファイルは Clang で .o ファイルにコンパイルされます。ヘッダー ファイル srcs 属性の任意のソースまたはヘッダーによってインクルードまたはインポートできる アクセスできますが、hdrs のヘッダーや 表示されます。 また、プリコンパイル済みの .o ファイルは srcs として指定することができます。注意すべき点は、 提供された .o ファイルのアーキテクチャと、 ビルドすることで、シンボル リンカーの欠落エラーを回避できます。
hdrs

List of labels; optional

公開されている C、C++、Objective-C、Objective-C++ のヘッダー ファイルのリスト 依存するルールのソースに含まれている必要があります。

これらのヘッダーは、ライブラリの公開インターフェースを記述したものです。 ルールに含まれているか、または独立している できます。このライブラリのクライアントに含めることを想定していないヘッダー srcs 属性で指定する必要があります。

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

Boolean; optional; default is False

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

List of strings; optional

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

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

defines

List of strings; optional

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

Boolean; optional; default is False

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

List of labels; optional

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

List of strings; optional

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

パスはパッケージ ディレクトリからの相対パスとして解釈され、 genfiles と bin ルート(例: blaze-genfiles/pkg/includedirblaze-out/pkg/includedir など)は、 あります。

COPTS とは異なり、以下のフラグはこのルールに追加されます。 依存するすべてのルールについて学習しました。(注: コンテナが依存するルールではありません)。行動 広範囲に影響が及ぶ可能性があるため、細心の注意を払ってください。判断に迷う場合は、 「-iquo」COPTS に渡します。

linkopts

List of strings; optional

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

Label; optional

このターゲットのカスタム Clang モジュール マップ。カスタム モジュール マップの使用はおすすめしません。ほとんど Bazel で生成されたモジュール マップを使用する必要があります。 指定すると、Bazel はこのターゲットのモジュール マップを生成しませんが、 渡されます。
module_name

String; optional

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

List of labels; optional

作成のために処理される Objective-C ファイルのリスト ARC を使用しないライブラリ ターゲット。 この属性に含まれるファイルは、 srcs 属性ですが、ARC を有効にせずにコンパイルされます。
pch

Label; optional

コンパイルされるすべてのソースファイルの先頭に付加するヘッダー ファイル(両曲線とも アークなし)。 BUILD ファイルでは pch ファイルの使用は推奨されておらず、 非推奨とみなされます。pch ファイルは実際にはプリコンパイルされないため、 ビルド速度が向上しており、単なるグローバルな依存関係に過ぎません。ビルドから 効率性の面では 必要なものを直接含めた方がよいでしょう スキャンできます。
runtime_deps

List of labels; optional

ランタイム時に遅れて読み込まれるフレームワーク ターゲットのリスト。記載されている ビルド時にリンクされていないことを示します。
sdk_dylibs

List of strings; optional

リンクする SDK .dylib ライブラリの名前。例: 「libz」または 「libarchive」。 "libc++"バイナリに C++ コードまたは 依存関係ツリー内の Objective-C++ ソース。バイナリをリンクするときは、 そのバイナリの推移的依存関係グラフで指定されたすべてのライブラリが、 分析できます
sdk_frameworks

List of strings; optional

リンクする SDK フレームワークの名前(「AddressBook」、「QuartzCore」など)。「UIKit」および "基盤"iOS、tvOS、visionOS、 サポートしていますmacOS の場合は、「Foundation」のみ常に含まれます。

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

sdk_includes

List of strings; optional

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

List of labels; optional

サポートされている C、C++、Objective-C、および Objective-C++ ファイルのリスト このルールのソースファイル、またはこのルールの ライブラリです。hdrs とは異なり、これらは SDK とは別にコンパイル あります。
weak_sdk_frameworks

List of strings; optional

弱いリンクを設定する SDK フレームワークの名前。たとえば 「MediaAccessibility」。 定期的にリンクされている SDK フレームワークとの違いは、シンボルが 依存関係が弱くリンクされている場合、そのフレームワークが 実行時に存在しません。

available_xcodes

available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

このルールの 2 つのターゲットは、xcode_config ルール インスタンスによって依存できます。 リモートおよびローカルで利用可能な Xcode のバージョンを示します。 これにより、まとめて利用可能な xcode から公式の xcode バージョンを選択できます。

引数

属性
name

Name; required

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

default

Label; required; nonconfigurable

このプラットフォームのデフォルトの Xcode バージョン。
versions

List of labels; optional; nonconfigurable

このプラットフォームで利用可能な Xcode のバージョン。

xcode_config

xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

このルールの単一のターゲットは --xcode_version_config ビルドで参照できます --xcode_version フラグを承認済みの公式 xcode バージョンに変換するフラグです。 これにより、多数の登録済みエイリアスから公式の Xcode バージョンを選択できます。

引数

属性
name

Name; required

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

default

Label; optional; nonconfigurable

使用する xcode のデフォルトの公式バージョン。 指定された xcode_version ターゲットで指定されたバージョンは、次の場合に使用されます。 xcode_version ビルドフラグは指定されていません。このフィールドは必須です versions が設定されました。remote_versions または local_versions が設定されました。
local_versions

Label; optional; nonconfigurable

xcode_version targets that are available locally. These are used along with local_versions to select a mutually available version. This may not be set if versions is set.
remote_versions

Label; optional; nonconfigurable

xcode_version targets that are available remotely. These are used along with remote_versions to select a mutually available version. This may not be set if versions is set.
versions

List of labels; optional; nonconfigurable

承認済み: xcode_version targets that may be used. If the value of the xcode_version build flag matches one of the aliases or version number of any of the given xcode_version targets, the matching target will be used. This may not be set if remote_versions or local_versions is set.

xcode_version

xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_visionos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)

その xcode バージョンの有効なエイリアスを持つ単一の公式 xcode バージョンを表します。 xcode_config ルールをご覧ください。

引数

属性
name

Name; required

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

default_ios_sdk_version

String; optional; nonconfigurable

このバージョンの xcode が使用されているときにデフォルトで使用される iOS SDK バージョン。 ios_sdk_version ビルドフラグは、ここで指定された値をオーバーライドします。
default_macos_sdk_version

String; optional; nonconfigurable

このバージョンの xcode が使用されているときにデフォルトで使用される macOS SDK のバージョン。 macos_sdk_version ビルドフラグは、ここで指定された値をオーバーライドします。
default_tvos_sdk_version

String; optional; nonconfigurable

このバージョンの xcode が使用されているときにデフォルトで使用される tvos SDK のバージョン。 tvos_sdk_version ビルドフラグは、ここで指定された値をオーバーライドします。
default_visionos_sdk_version

String; optional; nonconfigurable

このバージョンの xcode が使用されているときにデフォルトで使用される visionos SDK バージョン。 visionos_sdk_version ビルドフラグは、ここで指定された値をオーバーライドします。
default_watchos_sdk_version

String; optional; nonconfigurable

このバージョンの xcode が使用されているときにデフォルトで使用される watchos SDK バージョン。 watchos_sdk_version ビルドフラグは、ここで指定された値をオーバーライドします。
version

String; required; nonconfigurable

Xcode バージョンの正式なバージョン番号。