Aturan Objective-C

Laporkan masalah Lihat sumber Per Malam · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Aturan

objc_import

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

Aturan ini mengenkapsulasi library statis yang telah dikompilasi dalam bentuk file .a. API ini juga memungkinkan ekspor header dan resource menggunakan metode atribut yang didukung oleh objc_library.

Argumen

Atribut
name

Nama; wajib

Nama unik untuk target ini.

deps

Daftar label; default-nya adalah []

Daftar target yang menjadi dependensi target ini.
hdrs

Daftar label; default-nya adalah []

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

{i>Header<i} ini menjelaskan antarmuka publik untuk {i>library<i} dan akan disediakan untuk disertakan oleh sumber dalam aturan ini atau aturan. Header tidak dimaksudkan untuk disertakan oleh klien library ini harus tercantum dalam atribut srcs.

Ini akan dikompilasi secara terpisah dari sumber jika modul diaktifkan.

Boolean; default-nya 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 dalam srcs dan non_arc_srcs, meskipun beberapa 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 terdaftar 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; default-nya adalah []

Daftar #include/#import jalur penelusuran untuk 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-nya.

Jalur ditafsirkan secara relatif terhadap direktori paket, dan root genfiles dan 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 menjadi dependensinya!) Membuat sangat berhati-hati, karena hal ini dapat menimbulkan jangkauan luas. Jika ragu, tambahkan flag "-iquote" ke COPTS.

sdk_dylibs

Daftar string; default-nya adalah []

Nama library .dylib SDK yang akan ditautkan. Misalnya, "libz" atau "libarchive". &quot;libc++&quot; disertakan secara otomatis jika biner memiliki {i>C++ <i}atau Sumber Objective-C++ dalam hierarki dependensinya. Saat menautkan biner, semua pustaka yang disebutkan dalam grafik dependensi transitif biner itu data
sdk_frameworks

Daftar {i>string<i}; default-nya adalah []

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

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

sdk_includes

Daftar {i>string<i}; default-nya adalah []

Daftar #include/#import jalur penelusuran untuk ditambahkan ke target ini dan semua target yang bergantung, di mana setiap jalur berhubungan $(SDKROOT)/usr/include.
textual_hdrs

Daftar label; default adalah []

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

Daftar {i>string<i}; default-nya adalah []

Nama framework SDK yang akan ditautkan secara lemah. Contohnya, "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

Melihat sumber aturan
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, linkopts, module_map, module_name, non_arc_srcs, 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 ditentukan.

Argumen

Atribut
name

Nama; wajib diisi

Nama unik untuk target ini.

deps

Daftar label; default-nya adalah []

Daftar target yang menjadi dependensi target ini.
srcs

Daftar label; default 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, beserta file yang dihasilkan. File sumber dikompilasi menjadi file .o dengan Clang. File header dapat disertakan/diimpor oleh sumber atau header mana pun dalam atribut srcs target ini, tetapi bukan dengan header dalam hdrs atau target apa pun yang bergantung tentang aturan ini. Selain itu, file .o yang telah dikompilasi sebelumnya dapat diberikan sebagai src. Berhati-hatilah untuk memastikan konsistensi dalam arsitektur file .o yang disediakan dan build untuk menghindari error linker simbol yang hilang.
hdrs

Daftar label; default-nya adalah []

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

{i>Header<i} ini menjelaskan antarmuka publik untuk {i>library<i} dan akan disediakan untuk disertakan oleh sumber dalam aturan ini atau aturan. Header tidak dimaksudkan untuk disertakan oleh klien library ini harus tercantum dalam atribut srcs.

Ini akan dikompilasi secara terpisah dari sumber jika modul diaktifkan.

Boolean; default-nya adalah False

Jika 1, paket atau biner apa pun yang bergantung (langsung atau tidak langsung) pada {i>library<i} akan menautkan semua file objek untuk file yang tercantum dalam srcs dan non_arc_srcs, meskipun beberapa yang berisi tidak simbol yang direferensikan oleh biner. Hal ini berguna jika kode Anda tidak dipanggil secara eksplisit oleh kode dalam biner, misalnya, jika kode Anda terdaftar untuk menerima beberapa callback yang disediakan oleh beberapa layanan.
copts

Daftar {i>string<i}; default-nya adalah []

Flag tambahan yang akan diteruskan ke compiler. Tunduk pada penggantian "Make variable" dan tokenisasi shell Bourne. 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 tanda "-I" di copts akan diuraikan, diawali dengan "$(WORKSPACE_ROOT)/" jika merupakan jalur relatif, dan ditambahkan ke jalur penelusuran header untuk target Xcode terkait.

defines

Daftar string; default-nya adalah []

Flag -D tambahan yang akan diteruskan ke compiler. Fungsi ini harus dalam bentuk KEY=VALUE atau hanya KEY dan diteruskan tidak hanya ke compiler untuk target ini (seperti copts ), tetapi juga ke semua dependen objc_ dari target ini. Tunduk pada penggantian "Make variable" dan tokenisasi shell Bourne.
enable_modules

Boolean; default-nya adalah False

Mengaktifkan dukungan modul clang (melalui -fmodules). Menyetelnya ke 1 akan memungkinkan Anda @mengimpor header sistem dan target lainnya: @import UIKit; {i>@import path_to_package_target;<i}
implementation_deps

Daftar label; default-nya adalah []

Daftar library lain yang menjadi dependensi target library. Tidak seperti deps, header dan jalur penyertaan 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 {i>string<i}; default-nya adalah []

Daftar #include/#import jalur penelusuran untuk 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-nya.

Jalur ditafsirkan secara relatif terhadap direktori paket, dan root genfiles dan 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 menjadi dependensinya.) Membuat sangat berhati-hati, karena hal ini dapat menimbulkan jangkauan luas. Jika ragu, tambahkan flag "-iquote" ke COPTS.

linkopts

Daftar {i>string<i}; default-nya adalah []

Tanda tambahan yang akan diteruskan ke penaut.
module_map

Label; default-nya adalah None

peta modul Clang kustom untuk target ini. Penggunaan peta modul kustom tidak disarankan. Paling sering sebaiknya pengguna 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; 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; default-nya adalah []

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

Label; default adalah None

File header untuk ditambahkan ke setiap file sumber yang dikompilasi (kedua busur dan non-arc). Penggunaan file {i>pch<i} secara aktif tidak disarankan dalam file BUILD, dan ini seharusnya dianggap tidak digunakan lagi. Karena file pch tidak benar-benar dikompilasi sebelumnya, ini bukan peningkatan kecepatan build, melainkan hanya dependensi global. Dari sudut pandang efisiensi build, Anda sebaiknya menyertakan hal yang Anda butuhkan secara langsung di sumber tempat Anda membutuhkannya.
sdk_dylibs

Daftar string; default-nya adalah []

Nama library .dylib SDK yang akan ditautkan. Misalnya, "libz" atau "libarchive". &quot;libc++&quot; disertakan secara otomatis jika biner memiliki {i>C++ <i}atau Sumber Objective-C++ dalam hierarki dependensinya. Saat menautkan biner, semua pustaka yang disebutkan dalam grafik dependensi transitif biner itu data
sdk_frameworks

Daftar {i>string<i}; default-nya adalah []

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

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

sdk_includes

Daftar {i>string<i}; default-nya adalah []

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

Boolean; default-nya adalah False

textual_hdrs

Daftar label; default adalah []

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

Daftar {i>string<i}; default-nya adalah []

Nama framework SDK yang akan ditautkan secara lemah. Contohnya, "MediaAccessibility". Perbedaan dengan framework SDK yang ditautkan secara rutin, simbol dari framework yang ditautkan secara lemah tidak menyebabkan error tidak ada pada runtime.