Aturan Objective-C

Laporkan masalah Lihat sumber Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Aturan

objc_import

Lihat sumber aturan
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, includes, package_metadata, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

Aturan ini merangkum library statis yang sudah dikompilasi dalam bentuk file .a. Hal ini juga memungkinkan mengekspor header dan resource menggunakan atribut yang sama yang didukung oleh objc_library.

Argumen

Atribut
name

Nama; wajib

Nama unik untuk target ini.

deps

Daftar label; defaultnya adalah []

Daftar target yang menjadi dependensi target ini.
hdrs

Daftar label; defaultnya adalah []

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

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

File ini akan dikompilasi secara terpisah dari sumber jika modul diaktifkan.

Boolean; defaultnya adalah False

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

Daftar label; wajib diisi

Daftar file .a yang diberikan ke target Objective-C yang bergantung pada target ini.
includes

Daftar string; defaultnya adalah []

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

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

Tidak seperti COPTS, tanda ini ditambahkan untuk aturan ini dan setiap aturan yang bergantung padanya. (Catatan: bukan aturan yang bergantung padanya.) Berhati-hatilah, karena hal ini dapat berdampak luas. Jika ragu, tambahkan tanda "-iquote" ke COPTS.

sdk_dylibs

Daftar string; defaultnya adalah []

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 disebutkan dalam grafik dependensi transitif biner tersebut akan digunakan.
sdk_frameworks

Daftar string; defaultnya adalah []

Nama framework SDK yang akan ditautkan (misalnya, "AddressBook", "QuartzCore").

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

sdk_includes

Daftar string; defaultnya adalah []

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

Daftar label; defaultnya adalah []

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, file ini tidak akan dikompilasi secara terpisah dari sumber.
weak_sdk_frameworks

Daftar string; defaultnya adalah []

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

objc_library

Lihat sumber aturan
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, conlyopts, copts, cxxopts, defines, deprecation, enable_modules, exec_compatible_with, exec_group_compatible_with, exec_properties, features, implementation_deps, includes, linkopts, module_map, module_name, non_arc_srcs, package_metadata, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, stamp, 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

Nama; wajib

Nama unik untuk target ini.

deps

Daftar label; defaultnya adalah []

Daftar target yang menjadi dependensi target ini.
srcs

Daftar label; defaultnya adalah []

Daftar file sumber dan header C, C++, Objective-C, dan Objective-C++, dan/atau file sumber assembly (`.s`, `.S`, atau `.asm`), yang diproses untuk membuat target library. Ini adalah file yang Anda check in, ditambah file yang dihasilkan. File sumber dikompilasi menjadi file .o dengan Clang. File header dapat disertakan/diimpor oleh sumber atau header apa pun dalam atribut srcs 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 untuk memastikan konsistensi dalam arsitektur file .o yang disediakan dan build untuk menghindari error linker simbol yang hilang.
hdrs

Daftar label; defaultnya adalah []

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

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

File ini akan dikompilasi secara terpisah dari sumber jika modul diaktifkan.

Boolean; defaultnya adalah False

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

Daftar string; defaultnya adalah []

Flag tambahan yang akan diteruskan ke compiler untuk file C. Tunduk pada penggantian "Buat variabel" dan tokenisasi Bourne shell. Flag ini hanya akan berlaku untuk target ini, dan bukan target yang menjadi dependensinya, atau target yang bergantung padanya.

Perhatikan bahwa untuk project Xcode yang dihasilkan, jalur direktori yang ditentukan menggunakan flag "-I" di copts diuraikan, diawali dengan "$(WORKSPACE_ROOT)/" jika merupakan jalur relatif, dan ditambahkan ke jalur penelusuran header untuk target Xcode terkait.

copts

Daftar string; defaultnya adalah []

Tanda tambahan untuk diteruskan ke compiler. Tunduk pada penggantian "Buat variabel" dan tokenisasi Bourne shell. Flag ini hanya akan berlaku untuk target ini, dan bukan target yang menjadi dependensinya, atau target yang bergantung padanya.

Perhatikan bahwa untuk project Xcode yang dihasilkan, jalur direktori yang ditentukan menggunakan flag "-I" di copts diuraikan, diawali dengan "$(WORKSPACE_ROOT)/" jika merupakan jalur relatif, dan ditambahkan ke jalur penelusuran header untuk target Xcode terkait.

cxxopts

Daftar string; defaultnya adalah []

Flag tambahan yang akan diteruskan ke compiler untuk file Objective-C++ dan C++. Tunduk pada penggantian "Buat variabel" dan tokenisasi Bourne shell. Flag ini hanya akan berlaku untuk target ini, dan bukan target yang menjadi dependensinya, atau target yang bergantung padanya.

Perhatikan bahwa untuk project Xcode yang dihasilkan, jalur direktori yang ditentukan menggunakan flag "-I" di copts diuraikan, diawali dengan "$(WORKSPACE_ROOT)/" jika merupakan jalur relatif, dan ditambahkan ke jalur penelusuran header untuk target Xcode terkait.

defines

Daftar string; defaultnya adalah []

Tanda -D tambahan untuk diteruskan ke compiler. Objek tersebut harus dalam bentuk KEY=VALUE atau hanya KEY dan diteruskan tidak hanya ke compiler untuk target ini (seperti copts lainnya), tetapi juga ke semua objc_ yang bergantung pada target ini. Tunduk pada penggantian "Buat variabel" dan tokenisasi Bourne shell.
enable_modules

Boolean; defaultnya adalah False

Mengaktifkan dukungan modul clang (melalui -fmodules). Dengan menyetelnya ke 1, Anda dapat mengimpor header sistem dan target lainnya dengan @import: @import UIKit; @import path_to_package_target;
implementation_deps

Daftar label; defaultnya adalah []

Daftar library lain yang menjadi tempat bergantung target library. Tidak seperti dengan deps, header dan jalur include library ini (dan semua dependensi transitifnya) hanya digunakan untuk kompilasi library ini, dan bukan library yang bergantung padanya. Library yang ditentukan dengan implementation_deps masih ditautkan dalam target biner yang bergantung pada library ini.
includes

Daftar string; defaultnya adalah []

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

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

Tidak seperti COPTS, tanda ini ditambahkan untuk aturan ini dan setiap aturan yang bergantung padanya. (Catatan: bukan aturan yang bergantung padanya.) Berhati-hatilah, karena hal ini dapat berdampak luas. Jika ragu, tambahkan tanda "-iquote" ke COPTS.

linkopts

Daftar string; defaultnya adalah []

Tanda tambahan untuk diteruskan ke linker.
module_map

Label; defaultnya adalah None

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

String; default-nya adalah ""

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

Daftar label; defaultnya adalah []

Daftar file Objective-C yang diproses untuk membuat target pustaka yang TIDAK menggunakan Penghitungan Referensi Otomatis (ARC). File dalam atribut ini diperlakukan sangat mirip dengan file dalam atribut srcs, tetapi dikompilasi tanpa mengaktifkan ARC.
pch

Label; defaultnya adalah None

File header yang akan ditambahkan ke setiap file sumber yang dikompilasi (baik arc maupun non-arc). Penggunaan file pch tidak dianjurkan dalam file BUILD, dan hal ini harus dianggap tidak digunakan lagi. Karena file pch sebenarnya tidak dikompilasi sebelumnya, hal ini bukan peningkatan kecepatan build, melainkan hanya dependensi global. Dari sudut pandang efisiensi build, Anda sebenarnya lebih baik menyertakan apa yang Anda butuhkan langsung di sumber tempat Anda membutuhkannya.
sdk_dylibs

Daftar string; defaultnya adalah []

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 disebutkan dalam grafik dependensi transitif biner tersebut akan digunakan.
sdk_frameworks

Daftar string; defaultnya adalah []

Nama framework SDK yang akan ditautkan (misalnya, "AddressBook", "QuartzCore").

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

sdk_includes

Daftar string; defaultnya adalah []

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

Boolean; defaultnya adalah False

textual_hdrs

Daftar label; defaultnya adalah []

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, file ini tidak akan dikompilasi secara terpisah dari sumber.
weak_sdk_frameworks

Daftar string; defaultnya adalah []

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