Objective-C ルール

問題を報告 ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ルール

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

名前:必須

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

deps

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

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

リーチできるすべての「java_library」および「java_import」目標 exportsdepsruntime_deps を通じて推移的 Java アノテーション処理によって生成されたファイルを含め、変換とコンパイルが行われます。 srcjar のない code>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

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

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

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

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

objc_import

ルールのソースを表示
objc_import(name, deps, 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

名前:必須

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

deps

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

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

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

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

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

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

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

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

ラベルのリスト。必須

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

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

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

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

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

sdk_dylibs

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

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

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

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

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

sdk_includes

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

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

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

サポートされている C、C++、Objective-C、および Objective-C++ ファイルのリスト このルールのソースファイル、またはこのルールの ライブラリです。hdrs とは異なり、これらは SDK とは別にコンパイル あります。
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, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, 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(含まれていないものも含む) バイナリによって参照されるシンボル。 これは、Python のコードでコードを明示的に呼び出していない場合に バイナリを受け取るコード(たとえば、コールバックを受け取るためにコードが登録されている場合) 提供します。
copts

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

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

生成された Xcode プロジェクトでは、ディレクトリ パスは「-I」を使用して指定します。使用すると、 copt が解析され、先頭に「$(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 とは異なり、以下のフラグはこのルールに追加されます。 依存するすべてのルールについて学習しました。(注: コンテナが依存するルールではありません)。行動 広範囲に影響が及ぶ可能性があるため、細心の注意を払ってください。判断に迷う場合は、 「-iquo」COPTS に渡します。

linkopts

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

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

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

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

String;デフォルトは "" です。

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

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

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

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

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

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

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

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

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

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

sdk_includes

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

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

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

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

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

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

available_xcodes

ルールのソースを表示
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

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

引数

属性
name

名前:必須

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

default

ラベル:構成不可必須

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

ラベルのリスト。構成不可デフォルトは []

このプラットフォームで利用可能な 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

名前:必須

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

default

ラベル:構成不可デフォルトは None

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

ラベル:構成不可デフォルトは None

ローカルで利用可能な xcode_version ターゲット。 これらは、相互に利用可能な選択を行うために、local_versions とともに使用されます。 できます。versions が設定されている場合は設定できません。
remote_versions

ラベル:構成不可デフォルトは None

リモートで使用可能な xcode_version ターゲット。 これらは、相互に利用可能な選択を行うために、remote_versions とともに使用されます。 できます。versions が設定されている場合は設定できません。
versions

ラベルのリスト。構成不可デフォルトは []

使用できるターゲットが xcode_version 個承認済みです。 xcode_version ビルドフラグの値がエイリアスのいずれかと一致する場合 指定された xcode_version ターゲットのバージョン番号またはバージョン番号 使用されます。remote_versions または local_versions が設定されました。

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

名前:必須

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

default_ios_sdk_version

String;設定不可デフォルトは "" です

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

String;設定不可デフォルトは "" です

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

String;設定不可デフォルトは "" です

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

String;設定不可デフォルトは "" です

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

String;設定不可デフォルトは "" です

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

String;設定不可必須

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