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 ターゲットに含まれる変換したファイルは、デフォルトのコンパイル構成(obbrac_library ルールのソースと同じ構成)を使用してコンパイルされます。属性のコンパイル オプションは指定されません。

また、生成されたコードはソースレベルではなくターゲット レベルで重複排除されます。同じ Java ソースファイルを含む 2 つの異なる Java ターゲットがある場合、リンク時に重複するシンボルエラーが表示されることがあります。この問題を解決する正しい方法は、共有 Java ソースファイルを、依存可能な別の共通ターゲットに移動することです。

引数

属性
name

Name; required

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

deps

List of labels; optional

Objective-C にトランスパイルされる Java ファイルを含む j2objc_libraryjava_libraryjava_importjava_proto_library ターゲットのリスト。

exportsdepsruntime_deps を通じて推移的に到達できる java_libraryjava_import のすべてのターゲットは、Java アノテーション処理で生成されたファイルを含めて翻訳され、コンパイルされます。srcjar が指定されていない code>java_import ターゲットはサポートされていません。

J2ObjC の変換は、推移的クロージャに含まれるソース Java ソースファイルのタイプに応じて動作が異なります。java_librarysrcs に含まれる .java ソースファイルごとに、対応する .h ソースファイルと .m ソースファイルが生成されます。java_librarysrcs または java_importsrcjar に含まれるソース jar ごとに、その jar のすべてのコードに対応するソースファイルと .h および .m ソースファイルが生成されます。

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

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

entry_classes

List of strings; optional

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

List of labels; optional

この j2objc_library ルールによって変換されたすべての Java コードに必要な追加の JRE エミュレーション ライブラリのリスト。デフォルトでは、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 ファイルの形式でカプセル化します。また、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 にリストされているファイルのすべてのオブジェクト ファイルにリンクします。これには、一部のファイルでバイナリから参照されるシンボルが含まれていない場合も含まれます。これは、バイナリ内のコードによってコードを明示的に呼び出さない場合(サービスが提供するコールバックを受け取るようにコードを登録する場合など)に便利です。
archives

List of labels; required

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

List of strings; optional

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

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

COPTS とは異なり、これらのフラグはこのルールおよびそれに依存するすべてのルールに追加されます。(注: これはルールに依存しません)。これは広範囲に影響する可能性があるため、注意が必要です。判断がつかない場合は、COPTS に「-iquote」フラグを追加してください。

sdk_dylibs

List of strings; optional

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

List of strings; optional

リンクする SDK フレームワークの名前(「AddressBook」、「QuartzCore」など)。iOS、tvOS、watchOS のプラットフォームをビルドする場合は、常に「UIKit」と「Foundation」が含まれます。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 とは異なり、これらはソースとは別にコンパイルされません。
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, 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

Name; required

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

deps

List of labels; optional

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

List of labels; optional

ライブラリ ターゲットを作成するために処理される C、C++、Objective-C、Objective-C++ のソースファイル、ヘッダー ファイル、アセンブリ ソースファイル(`.s`、`.S`、`.asm`)のリスト。 チェックインされたファイルと生成されたファイルは次のとおりです。 ソースファイルは、Clang で .o ファイルにコンパイルされます。ヘッダー ファイルは、このターゲットの srcs 属性に任意のソースまたはヘッダーでインクルードまたはインポートできます。ただし、hdr のヘッダーやこのルールに依存するターゲットでインポートまたはインポートすることはできません。また、プリコンパイルされた .o ファイルは src として提供される場合があります。シンボル リンカー要素の欠落を回避するために、提供される .o ファイルのアーキテクチャとビルドのアーキテクチャの整合性に注意を払ってください。
hdrs

List of labels; optional

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

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

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

Boolean; optional; default is False

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

List of strings; optional

コンパイラに渡す追加のフラグ。Make 変数の置換とBourne シェルのトークン化が適用されます。これらのフラグは、このターゲットにのみ適用され、依存先または依存先には適用されません。

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

defines

List of strings; optional

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

Boolean; optional; default is False

-fmodules を介して clang モジュールのサポートを有効にします。 1 に設定すると、システム ヘッダーとその他のターゲットを @import UIKit でインポートできます。 @import path_to_package_target;
includes

List of strings; optional

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

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

COPTS とは異なり、これらのフラグはこのルールおよびそれに依存するすべてのルールに追加されます。(注: これはルールに依存しません)。これは広範囲に影響する可能性があるため、注意が必要です。判断がつかない場合は、COPTS に「-iquote」フラグを追加してください。

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

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

Label; optional

コンパイルされるすべてのソースファイルの先頭にあるヘッダー ファイル(円弧と非円弧の両方)。 PUI ファイル内で pch ファイルを使用することは推奨されません。これは非推奨とみなす必要があります。pch ファイルはプリコンパイルされないため、ビルド速度の向上ではなく、グローバルな依存関係となります。ビルドの効率性の観点からは、必要なものを必要なソースに直接含めるほうが実際は優れています。
sdk_dylibs

List of strings; optional

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

List of strings; optional

リンクする SDK フレームワークの名前(「AddressBook」、「QuartzCore」など)。iOS、tvOS、watchOS のプラットフォームをビルドする場合は、常に「UIKit」と「Foundation」が含まれます。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 とは異なり、これらはソースとは別にコンパイルされません。
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_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 のこのバージョンが使用されているときにデフォルトで使用される macosx SDK バージョン。macos_sdk_version ビルドフラグは、ここで指定された値をオーバーライドします。
default_tvos_sdk_version

String; optional; nonconfigurable

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

String; optional; nonconfigurable

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

String; required; nonconfigurable

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