BazelCon 2022 akan hadir pada 16-17 November ke New York dan online.
Daftar sekarang.

Aturan Objective-C

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Aturan

perpustakaan_j2objc_

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

Aturan ini menggunakan J2ObjC untuk menerjemahkan file sumber Java ke Objective-C, yang kemudian dapat digunakan sebagai dependensi aturan objc_library dan objc_binary. Informasi mendetail tentang J2ObjC itu sendiri dapat ditemukan di situs J2ObjC

Flag transpilation J2ObjC kustom dapat ditentukan menggunakan flag build --j2objc_translation_flags dalam command line.

Perhatikan bahwa file terjemahan yang disertakan dalam target j2objc_library akan dikompilasi menggunakan konfigurasi kompilasi default, konfigurasi yang sama seperti sumber aturan objc_library tanpa opsi kompilasi yang ditentukan dalam atribut.

Selain itu, kode yang dibuat duplikatnya pada tingkat target, bukan tingkat sumber. Jika Anda memiliki dua target Java berbeda yang menyertakan file sumber Java yang sama, Anda mungkin akan melihat error simbol duplikat pada waktu penautan. Cara yang tepat untuk menyelesaikan masalah ini adalah dengan memindahkan file sumber Java bersama ke target umum terpisah yang dapat diandalkan.

Argumen

Atribut
name

Name; required

Nama unik untuk target ini.

deps

List of labels; optional

Daftar target j2objc_library, java_library, java_import, dan java_proto_library yang berisi file Java yang akan ditranspilasi ke Objective-C.

Semua target java_library dan java_import yang dapat dicapai secara transitif melalui exports, deps, dan runtime_deps akan diterjemahkan dan dikompilasi. Saat ini, tidak ada dukungan untuk file yang dihasilkan oleh pemrosesan anotasi Java atau target java_import tanpa ada srcjar yang ditentukan.

Cara kerja terjemahan J2ObjC berbeda-beda bergantung pada jenis file sumber Java sumber yang disertakan dalam penutupan transitif. Untuk setiap file sumber .java yang disertakan dalam srcs dari java_library, file sumber .h dan .m yang sesuai akan dibuat. Untuk setiap jar sumber yang disertakan dalam srcs dari java_library atau srcjar dari java_import, file sumber .h dan .m yang sesuai akan dibuat dengan semua kode untuk jar tersebut.

Pengguna dapat mengimpor file header yang dibuat J2ObjC dalam kodenya. Jalur impor untuk file ini adalah jalur relatif root dari artefak Java asli. Misalnya, //some/package/foo.java memiliki jalur impor some/package/foo.h dan //some/package/bar.srcjar memiliki some/package/bar.h

Jika aturan proto_library berada dalam penutupan transitif aturan ini, proto J2ObjC juga akan dibuat, dikompilasi, dan ditautkan di tingkat biner. Untuk proto //some/proto/foo.proto, pengguna dapat mereferensikan kode yang dihasilkan menggunakan jalur impor some/proto/foo.j2objc.pb.h.

entry_classes

List of strings; optional

Daftar class Java yang telah diterjemahkan sebagai rekan ObjC akan langsung direferensikan oleh kode ObjC pengguna. Atribut ini wajib ada jika tanda --j2objc_dead_code_removal aktif. Class Java harus ditentukan dalam nama kanonisnya seperti yang didefinisikan oleh Spesifikasi Bahasa Java. Ketika flag --j2objc_dead_code_removal ditentukan, daftar class entri akan dikumpulkan secara transitif dan digunakan sebagai titik entri untuk melakukan analisis kode mati. Class yang tidak digunakan kemudian akan dihapus dari app bundle ObjC final.
jre_deps

List of labels; optional

Daftar library emulasi JRE tambahan yang diperlukan oleh semua kode Java yang diterjemahkan oleh aturan j2objc_library ini. Hanya fungsi JRE inti yang ditautkan secara default.

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)

Aturan ini mengenkapsulasi library statis yang sudah dikompilasi dalam bentuk file .a. Produk ini juga memungkinkan ekspor header dan resource menggunakan atribut yang sama yang didukung oleh objc_library.

Argumen

Atribut
name

Name; required

Nama unik untuk target ini.

hdrs

List of labels; optional

Daftar file header C, C++, Objective-C, dan Objective-C++ yang dipublikasikan oleh library ini untuk disertakan oleh sumber di aturan dependen.

Header ini menjelaskan antarmuka publik untuk library dan akan disediakan untuk penyertaan oleh sumber dalam aturan ini atau dalam aturan dependen. Header yang tidak dimaksudkan untuk disertakan oleh klien library ini harus dicantumkan dalam atribut src.

Keduanya akan dikompilasi secara terpisah dari sumber jika modul diaktifkan.

Boolean; optional; default is False

Jika 1, paket atau biner apa pun yang bergantung (secara langsung atau tidak langsung) pada library ini akan menautkan dalam semua file objek untuk file yang tercantum di srcs dan non_arc_srcs, meskipun beberapa di antaranya tidak memiliki simbol yang direferensikan oleh biner. Ini berguna jika kode Anda tidak secara eksplisit dipanggil oleh kode dalam biner, misalnya, jika kode Anda mendaftar untuk menerima beberapa callback yang disediakan oleh beberapa layanan.
archives

List of labels; required

Daftar file .a yang disediakan untuk target Objective-C yang bergantung pada target ini.
includes

List of strings; optional

Daftar jalur penelusuran #include/#import yang akan ditambahkan ke target ini dan semua target yang bergantung. Ini untuk mendukung library pihak ketiga dan open source yang tidak menentukan seluruh jalur ruang kerja di pernyataan #import/#include-nya.

Jalur ditafsirkan secara relatif terhadap direktori paket, dan rootfile serta root bin (misalnya blaze-genfiles/pkg/includedir dan blaze-out/pkg/includedir) disertakan selain root klien yang sebenarnya.

Tidak seperti COPTS, flag ini ditambahkan untuk aturan ini dan setiap aturan yang bergantung padanya. (Catatan: bukan aturan yang bergantung padanya) Berhati-hatilah, karena hal ini dapat memiliki efek jangkauan yang luas. Jika ragu, tambahkan "-iQuote" flag ke COPTS.

sdk_dylibs

List of strings; optional

Nama library .dylib SDK yang akan ditautkan. Misalnya, "libz" atau "libarchive". "libc++" disertakan secara otomatis jika biner memiliki sumber C++ atau Objective-C++ dalam hierarki dependensinya. Saat menautkan biner, semua library yang diberi nama dalam grafik dependensi transitif biner tersebut akan digunakan.
sdk_frameworks

List of strings; optional

Nama framework SDK untuk ditautkan (misalnya "AddressBook", "QuartzCore"). "UIKit" dan "Foundation" selalu disertakan saat mem-build untuk platform iOS, tvOS, dan watchOS. Untuk macOS, hanya "Foundation" yang selalu disertakan.

Saat menautkan biner Apple tingkat atas, semua framework SDK yang tercantum dalam grafik dependensi transitif biner tersebut akan ditautkan.

sdk_includes

List of strings; optional

Daftar jalur penelusuran #include/#import yang akan ditambahkan ke target ini dan semua target yang bergantung, dengan setiap jalur relatif terhadap $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

Daftar file C, C++, Objective-C, dan Objective-C++ yang disertakan sebagai header oleh file sumber dalam aturan ini atau oleh pengguna library ini. Tidak seperti hdr, nilai ini tidak akan dikompilasi secara terpisah dari sumber.
weak_sdk_frameworks

List of strings; optional

Nama framework SDK yang akan ditautkan dengan lemah. Misalnya, "MediaAccessibility". Berbeda dengan framework SDK yang ditautkan secara reguler, simbol dari framework yang ditautkan dengan lemah tidak menyebabkan error jika tidak ada pada runtime.

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, runtime_deps, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

Aturan ini menghasilkan library statis dari file sumber Objective-C yang diberikan.

Argumen

Atribut
name

Name; required

Nama unik untuk target ini.

deps

List of labels; optional

Daftar target yang ditautkan bersama untuk membentuk paket akhir.
srcs

List of labels; optional

Daftar file sumber dan header C, C++, Objective-C, dan Objective-C++, dan/atau (`.s`, `.S`, atau `.asm`) file sumber assembly, yang diproses untuk membuat target library. Ini adalah file yang telah check in, serta file yang dihasilkan. File sumber dikompilasi menjadi file .o dengan Clang. File header dapat disertakan/diimpor oleh sumber atau header apa pun dalam atribut src dari target ini, tetapi tidak oleh header dalam hdrs atau target apa pun yang bergantung pada aturan ini. Selain itu, file .o yang telah dikompilasi sebelumnya dapat diberikan sebagai srcs. Berhati-hatilah dalam memastikan konsistensi dalam arsitektur file .o yang disediakan dan build dari build untuk menghindari error simbol link yang hilang.
hdrs

List of labels; optional

Daftar file header C, C++, Objective-C, dan Objective-C++ yang dipublikasikan oleh library ini untuk disertakan oleh sumber di aturan dependen.

Header ini menjelaskan antarmuka publik untuk library dan akan disediakan untuk penyertaan oleh sumber dalam aturan ini atau dalam aturan dependen. Header yang tidak dimaksudkan untuk disertakan oleh klien library ini harus dicantumkan dalam atribut src.

Keduanya akan dikompilasi secara terpisah dari sumber jika modul diaktifkan.

Boolean; optional; default is False

Jika 1, paket atau biner apa pun yang bergantung (secara langsung atau tidak langsung) pada library ini akan menautkan dalam semua file objek untuk file yang tercantum di srcs dan non_arc_srcs, meskipun beberapa di antaranya tidak memiliki simbol yang direferensikan oleh biner. Ini berguna jika kode Anda tidak secara eksplisit dipanggil oleh kode dalam biner, misalnya, jika kode Anda mendaftar untuk menerima beberapa callback yang disediakan oleh beberapa layanan.
copts

List of strings; optional

Flag tambahan untuk diteruskan ke compiler. Tunduk pada substitusi "Make variabel" dan tokenisasi shell Bourne. Flag ini hanya akan berlaku untuk target ini, dan bukan yang bergantung padanya, atau yang bergantung pada target tersebut.

Perlu diketahui bahwa untuk project Xcode yang dihasilkan, jalur direktori yang ditentukan menggunakan "-I" flag di copt akan diurai, diawali dengan "$(WORKSPACE_ROOT)/" jika berupa jalur relatif, dan ditambahkan ke jalur penelusuran header untuk target Xcode terkait.

defines

List of strings; optional

Flag -D tambahan untuk diteruskan ke compiler. Class tersebut harus berada dalam bentuk KEY=VALUE atau KEY, dan tidak hanya diteruskan ke compiler untuk target ini (sebagaimana copts), tetapi juga ke semua dependensi objc_ dari target ini. Tunduk pada substitusi "Make variabel" dan tokenisasi shell Bourne.
enable_modules

Boolean; optional; default is False

Mengaktifkan dukungan modul clang (via -fmodules). Menetapkan ini ke 1 akan memungkinkan Anda untuk @import header sistem dan target lainnya: @import UIKit; @import path_to_package_target;
includes

List of strings; optional

Daftar jalur penelusuran #include/#import yang akan ditambahkan ke target ini dan semua target yang bergantung. Ini untuk mendukung library pihak ketiga dan open source yang tidak menentukan seluruh jalur ruang kerja di pernyataan #import/#include-nya.

Jalur ditafsirkan secara relatif terhadap direktori paket, dan rootfile serta root bin (misalnya blaze-genfiles/pkg/includedir dan blaze-out/pkg/includedir) disertakan selain root klien yang sebenarnya.

Tidak seperti COPTS, flag ini ditambahkan untuk aturan ini dan setiap aturan yang bergantung padanya. (Catatan: bukan aturan yang bergantung padanya) Berhati-hatilah, karena hal ini dapat memiliki efek jangkauan yang luas. Jika ragu, tambahkan "-iQuote" flag ke COPTS.

linkopts

List of strings; optional

Flag tambahan untuk diteruskan ke penaut.
module_map

Label; optional

Peta modul Clang kustom untuk target ini. Penggunaan peta modul kustom tidak disarankan. Sebagian besar pengguna harus menggunakan peta modul yang dihasilkan oleh Bazel. Jika ditentukan, Bazel tidak akan membuat peta modul untuk target ini, tetapi akan meneruskan peta modul yang disediakan ke compiler.
module_name

String; optional

Menetapkan nama modul untuk target ini. Secara default, nama modul adalah jalur target dengan semua simbol khusus diganti dengan _, mis. //foo/baz:bar dapat diimpor sebagai foo_baz_bar.
non_arc_srcs

List of labels; optional

Daftar file Objective-C yang diproses untuk membuat target library yang TIDAK menggunakan ARC. File dalam atribut ini diperlakukan sangat mirip dengan file yang ada di atribut src, tetapi dikompilasi tanpa mengaktifkan ARC.
pch

Label; optional

File header untuk ditambahkan ke setiap file sumber yang dikompilasi (baik arc maupun non-arc). Penggunaan file pch tidak disarankan untuk aktif di file BUILD, dan file ini harus dianggap tidak digunakan lagi. Karena file pch sebenarnya tidak dikompilasi sebelumnya, ini bukanlah peningkatan kecepatan build, melainkan sekadar dependensi global. Dari sudut pandang build build, Anda sebenarnya dapat menemukan hal yang diperlukan langsung di sumber mana pun yang dibutuhkan.
runtime_deps

List of labels; optional

Daftar target framework yang terlambat dimuat pada runtime. Keduanya disertakan dalam app bundle, tetapi tidak ditautkan pada waktu build.
sdk_dylibs

List of strings; optional

Nama library .dylib SDK yang akan ditautkan. Misalnya, "libz" atau "libarchive". "libc++" disertakan secara otomatis jika biner memiliki sumber C++ atau Objective-C++ dalam hierarki dependensinya. Saat menautkan biner, semua library yang diberi nama dalam grafik dependensi transitif biner tersebut akan digunakan.
sdk_frameworks

List of strings; optional

Nama framework SDK untuk ditautkan (misalnya "AddressBook", "QuartzCore"). "UIKit" dan "Foundation" selalu disertakan saat mem-build untuk platform iOS, tvOS, dan watchOS. Untuk macOS, hanya "Foundation" yang selalu disertakan.

Saat menautkan biner Apple tingkat atas, semua framework SDK yang tercantum dalam grafik dependensi transitif biner tersebut akan ditautkan.

sdk_includes

List of strings; optional

Daftar jalur penelusuran #include/#import yang akan ditambahkan ke target ini dan semua target yang bergantung, dengan setiap jalur relatif terhadap $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

Daftar file C, C++, Objective-C, dan Objective-C++ yang disertakan sebagai header oleh file sumber dalam aturan ini atau oleh pengguna library ini. Tidak seperti hdr, nilai ini tidak akan dikompilasi secara terpisah dari sumber.
weak_sdk_frameworks

List of strings; optional

Nama framework SDK yang akan ditautkan dengan lemah. Misalnya, "MediaAccessibility". Berbeda dengan framework SDK yang ditautkan secara reguler, simbol dari framework yang ditautkan dengan lemah tidak menyebabkan error jika tidak ada pada runtime.

kode_tersedia

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

Dua target aturan ini dapat diandalkan oleh instance aturan xcode_config untuk menunjukkan versi xcode yang tersedia secara jarak jauh dan tersedia secara lokal. Ini memungkinkan pemilihan versi xcode resmi dari xcode yang tersedia secara kolektif.

Argumen

Atribut
name

Name; required

Nama unik untuk target ini.

default

Label; required; nonconfigurable

Versi xcode default untuk platform ini.
versions

List of labels; optional; nonconfigurable

Versi xcode yang tersedia di platform ini.

Konfigurasi_xcode

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

Satu target aturan ini dapat dirujuk oleh flag build --xcode_version_config untuk menerjemahkan flag --xcode_version ke dalam versi xcode resmi yang diterima. Hal ini memungkinkan pemilihan versi xcode resmi dari sejumlah alias yang terdaftar.

Argumen

Atribut
name

Name; required

Nama unik untuk target ini.

default

Label; optional; nonconfigurable

Versi resmi xcode default yang akan digunakan. Versi yang ditentukan oleh target xcode_version yang disediakan akan digunakan jika tidak ada flag build xcode_version yang ditentukan. Ini diperlukan jika ada versions yang ditetapkan. Ini mungkin tidak ditetapkan jika remote_versions atau local_versions ditetapkan.
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

Diterima 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.

versi_xcode

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)

Mewakili satu versi xcode resmi dengan alias yang dapat diterima untuk versi xcode tersebut. Lihat aturan xcode_config.

Argumen

Atribut
name

Name; required

Nama unik untuk target ini.

default_ios_sdk_version

String; optional; nonconfigurable

Versi SDK iOS yang digunakan secara default saat versi xcode ini digunakan. Flag build ios_sdk_version akan menggantikan nilai yang ditentukan di sini.
default_macos_sdk_version

String; optional; nonconfigurable

Versi macosx sdk yang digunakan secara default saat versi xcode ini digunakan. Flag build macos_sdk_version akan menggantikan nilai yang ditentukan di sini.
default_tvos_sdk_version

String; optional; nonconfigurable

Versi tvos sdk yang digunakan secara default saat versi xcode ini digunakan. Flag build tvos_sdk_version akan menggantikan nilai yang ditentukan di sini.
default_watchos_sdk_version

String; optional; nonconfigurable

Versi SDK watchos yang digunakan secara default saat versi xcode ini digunakan. Flag build watchos_sdk_version akan menggantikan nilai yang ditentukan di sini.
version

String; required; nonconfigurable

Nomor versi resmi versi Xcode.