Objective-C Kuralları

Kurallar

j2objc_library

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

Bu kural, Java kaynağını çevirmek için J2ObjC kodunu kullanır. dosyalarını Objective-C'ye kopyalayın. Bu dosyalar daha sonra objc_library ve objc_binary bağımlıları olarak kullanılabilir. kurallar. J2ObjC hakkında ayrıntılı bilgi için şu adrese gidin: J2ObjC sitesi

Özel J2ObjC dönüştürme işaretleri, derleme işareti kullanılarak belirtilebilir --j2objc_translation_flags komut satırı işaretini kullanabilir.

j2objc_library hedefinde yer alan çevrilmiş dosyaların varsayılan derleme yapılandırması kullanılarak derlenen, özelliklerde derleme seçeneği belirtilmemiş bir objc_library kuralı.

Ayrıca, oluşturulan kod kaynak düzeyinde değil, hedef düzeyde tekilleştirilir. İki aynı Java kaynak dosyalarını içeren farklı Java hedefleri varsa, yinelenen simge hatası bağlantı anında. Bu sorunu çözmenin doğru yolu, paylaşılan Java kaynak dosyalarını bir ortak hedef belirleyin.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

j2objc_library, java_library, Şunları içeren java_import ve java_proto_library hedefleri Objective-C'ye aktarılacak Java dosyaları.

Ulaşılabilecek tüm java_library ve java_import hedefleri exports, deps ve runtime_deps üzerinden geçişli çevrilecek ve derlenecek. Java tarafından oluşturulan dosyalar şu anda desteklenmemektedir. ek açıklama işleme veya srcjar içermeyen java_import hedef belirtiliyor.

J2ObjC çevirisi, kaynak Java kaynağının türüne bağlı olarak farklı şekilde çalışır dosyaları geçişli kapatmaya dahil edilir. srcs/java_library, karşılık gelen .h ve .m kaynak dosyası oluşturulacaktır. srcs hedefine dahil edilen her kaynak kavanoz için java_library veya srcjar/java_import, bir karşılık gelen .h ve .m kaynak dosyası, söz konusu jar dosyasının tüm koduyla oluşturulur.

Kullanıcılar, J2ObjC tarafından oluşturulan başlık dosyalarını kodlarına aktarabilir. Şu verilerin içe aktarma yolları: bu dosyalar, orijinal Java yapılarının köke bağlı yoludur. Örneğin, //some/package/foo.java, some/package/foo.h olan içe aktarma yoluna sahip ve //some/package/bar.srcjar için some/package/bar.h

proto_library kuralları bu kuralın geçişli kapanışındaysa J2ObjC proto'ları da ikili düzeyde oluşturulması, derlenmesi ve bağlanmasını sağlamak. Proto için //some/proto/foo.proto, kullanıcılar içe aktarma özelliğini kullanarak oluşturulan koda başvurabilir some/proto/foo.j2objc.pb.h yolu.

entry_classes

List of strings; optional

Çevrilmiş ObjC karşılıklarına doğrudan referans verilecek Java sınıflarının listesi kullanıcı ObjC koduna göre. --j2objc_dead_code_removal bayrağı açıksa bu özellik gereklidir. Java sınıfları, aşağıdaki gibi standart adlarıyla belirtilmelidir: Java Dil Spesifikasyonu. --j2objc_dead_code_removal işareti belirtildiğinde giriş sınıflarının listesi geçişli olarak toplanır ve geçersiz kod analizi yapmak için giriş noktaları olarak kullanılır. Kullanılmayan sınıflar nihai ObjC uygulama paketinden kaldırılır.
jre_deps

List of labels; optional

Bu komut tarafından çevrilmiş tüm Java kodları için gereken ek JRE emülasyon kitaplıklarının listesi j2objc_library kural. Varsayılan olarak yalnızca temel JRE işlevleri bağlıdır.

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)

Bu kural, önceden derlenmiş bir statik kitaplığı .a dosyası yükleyin. Ayrıca aynı özellikler objc_library tarafından desteklenir.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

hdrs

List of labels; optional

Yayınlanan C, C++, Objective-C ve Objective-C++ başlık dosyalarının listesi tarafından bağımlı kurallardaki kaynaklar tarafından dahil edilecek.

Bu başlıklar kütüphanenin herkese açık arayüzünü tanımlar ve bu kuraldaki kaynaklar tarafından veya bağımlı kurallar. Üstbilgiler, bu kitaplığın bir istemcisi tarafından eklenmek üzere tasarlanmamıştır srcs özelliğinde listelenmesi gerekir.

Modüller etkinse bunlar kaynaktan ayrı olarak derlenir.

Boolean; optional; default is False

1 ise (doğrudan veya dolaylı olarak) buna bağımlı herhangi bir paket veya ikili program kitaplığının, listelenen dosyalar için tüm nesne dosyalarına Bazılarında hiç içerik bulunmasa bile srcs ve non_arc_srcs iki simgeli dosya biçimi tarafından başvurulmuştur. Bu, kodunuz yalnızca dil tercihinde kod tarafından kodu alır. Örneğin, kodunuz bir geri çağırma işlemi almak için kaydedilir bir hizmet tarafından sağlanır.
archives

List of labels; required

Objective-C hedeflerine sağlanan .a dosyalarının listesi bu hedefe bağlıdır.
includes

List of strings; optional

Bu hedefe eklenecek #include/#import arama yolunun listesi hedeflere bağlı olarak değişiyor. Bu, çalışmayan üçüncü taraf ve açık kaynaklı çalışma alanı yolunun tamamını #import/#include ifadeleri.

Yollar, paket dizinine göre yorumlanır ve gendosyaları ve bin kökleri (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir) şu URL'lere ek olarak dahil edilir: gerçek istemci köküdür.

COPTS'nin aksine, bu işaretler bu kural için eklenir ona bağlı tüm kuralları görebiliriz. (Not: Bu kuralların bağlı olduğu kurallar değildir.) geniş kapsamlı etkileri olabileceği için dikkatli olun. Şüpheye düştüğünüzde "-alıntı" COPTS olarak işaretler.

sdk_dylibs

List of strings; optional

Bağlantı oluşturulacak SDK .dylib kitaplıklarının adları. Örneğin, "libz" veya "libarşiv". "libc++" ikili programda C++ veya Bağımlılık ağacındaki Objective-C++ kaynakları. Bir ikili programı bağlarken ikili programın geçişli bağımlılık grafiğinde adı geçen tüm kitaplıklar kullanılır.
sdk_frameworks

List of strings; optional

Bağlantı oluşturulacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore"). "UIKit" ve "Temel" 2020'den itibaren iOS, tvOS, visionOS ve ve watchOS platformları kullandığınızdan emin olun. macOS için yalnızca "Temel" her zaman dahil edilir.

Üst düzey bir Apple ikili programına bağlanırken, söz konusu ikili programın geçişli bağımlılık grafikleri bağlantılıdır.

sdk_includes

List of strings; optional

Bu hedefe eklenecek #include/#import arama yolunun listesi ve her yolun göreceli olduğu hedeflere bağlı olarak $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

C, C++, Objective-C ve Objective-C++ dosyalarını içeren bu kuraldaki kaynak dosyalar veya bu kuralın kullanıcıları tarafından başlık olarak dahil edilir kitaplığını açar. HDR'lerin aksine, bunlar kaynaklar.
weak_sdk_frameworks

List of strings; optional

Zayıf şekilde bağlantı kurulacak SDK çerçevelerinin adları. Örneğin, "MediaAccessibility" (Medya Erişilebilirliği). Düzenli olarak bağlanmış SDK çerçeveleri, simgeler birbirine çok benzer ya da zayıf bağlantılı çerçevelere mevcut olmayanlardır.

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

Bu kural, belirtilen Objective-C kaynak dosyalarından statik bir kitaplık oluşturur.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

Nihai grubu oluşturmak için birbirine bağlanan hedeflerin listesi.
srcs

List of labels; optional

C, C++, Objective-C ve Objective-C++ kaynak ve üstbilgisi listesi dosya ve/veya (`.s`, `.S` ya da `.asm`) derleme kaynak dosyaları kitaplık hedefini. Bunlar, giriş yaptığınız dosyalar ve oluşturulan dosyalardır. Kaynak dosyalar, Clang ile .o dosyaları olarak derlenir. Başlık dosyaları srcs özelliğindeki herhangi bir kaynak veya başlık tarafından dahil edilebilir/içe aktarılabilir ancak hdrs'deki başlıklar veya ona bağlı hedeflere göre değil bu kuraldan yararlanabilirsiniz. Ayrıca, önceden derlenmiş .o dosyaları src'ler olarak da verilebilir. Şunları yaparken dikkatli olun: sağlanan .o dosyalarının ve derlemesini kullanın.
hdrs

List of labels; optional

Yayınlanan C, C++, Objective-C ve Objective-C++ başlık dosyalarının listesi tarafından bağımlı kurallardaki kaynaklar tarafından dahil edilecek.

Bu başlıklar kütüphanenin herkese açık arayüzünü tanımlar ve bu kuraldaki kaynaklar tarafından veya bağımlı kurallar. Üstbilgiler, bu kitaplığın bir istemcisi tarafından eklenmek üzere tasarlanmamıştır srcs özelliğinde listelenmesi gerekir.

Modüller etkinse bunlar kaynaktan ayrı olarak derlenir.

Boolean; optional; default is False

1 ise (doğrudan veya dolaylı olarak) buna bağımlı herhangi bir paket veya ikili program kitaplığının, listelenen dosyalar için tüm nesne dosyalarına Bazılarında hiç içerik bulunmasa bile srcs ve non_arc_srcs iki simgeli dosya biçimi tarafından başvurulmuştur. Bu, kodunuz yalnızca dil tercihinde kod tarafından kodu alır. Örneğin, kodunuz bir geri çağırma işlemi almak için kaydedilir bir hizmet tarafından sağlanır.
copts

List of strings; optional

Derleyiciye iletilecek ek işaretler. "Değişken yap" değişikliğine tabi ve Bourne kabuk belirteçleme. Bu işaretler yalnızca bu hedef için geçerli olacaktır, veya buna bağımlı olanlara bağlıdır.

Oluşturulan Xcode projesi için dizin yollarının "-I" kullanılarak belirtildiğini unutmayın. CANNOT TRANSLATE copt'ler ayrıştırılır, başına "$(WORKSPACE_ROOT)/" eklenir Bunlar göreli yollar olup olmadığı ve eklenen Xcode hedefi için başlık arama yollarına eklenir.

defines

List of strings; optional

Derleyiciye aktarılacak fazladan -D işaretleri. Bu dillerin KEY=VALUE veya sadece KEY yalnızca bu hedef için derleyiciye iletmekle kalmaz (copts olarak aynı zamanda bu hedefin tüm objc_ bağımlıları için de geçerlidir. "Değişken yap" değişikliğine tabi ve Bourne kabuk belirteçleme.
enable_modules

Boolean; optional; default is False

Clang modülü desteğini etkinleştirir (-fmodules aracılığıyla). Bunu 1 olarak ayarlamak sistem üstbilgilerini ve diğer hedefleri @içe aktarmanızı sağlar: @import UIKit; @paketin_hedefine_aktarma yolu;
implementation_deps

List of labels; optional

Kitaplığın hedeflediği diğer kitaplıkların listesi. Şununla beğenme: deps, üstbilgilerini içerir ve bu kitaplıkların (ve tüm geçişli dep'ler) yalnızca bu kitaplığın derlenmesi için kullanılır, ona güvenmeniz gerekir. implementation_deps ile belirtilen kitaplıklar hâlâ bağlı bu kitaplığa bağımlı ikili hedeflerindedir.
includes

List of strings; optional

Bu hedefe eklenecek #include/#import arama yolunun listesi hedeflere bağlı olarak değişiyor. Bu, çalışmayan üçüncü taraf ve açık kaynaklı çalışma alanı yolunun tamamını #import/#include ifadeleri.

Yollar, paket dizinine göre yorumlanır ve gendosyaları ve bin kökleri (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir) şu URL'lere ek olarak dahil edilir: gerçek istemci köküdür.

COPTS'nin aksine, bu işaretler bu kural için eklenir ona bağlı tüm kuralları görebiliriz. (Not: Bu kuralların bağlı olduğu kurallar değildir.) geniş kapsamlı etkileri olabileceği için dikkatli olun. Şüpheye düştüğünüzde "-alıntı" COPTS olarak işaretler.

linkopts

List of strings; optional

Bağlayıcıya iletilecek ek işaretler.
module_map

Label; optional

Bu hedef için özel bir Clang modülü haritası. Özel modül haritasının kullanılması önerilmez. En sık kullanıcıları, Bazel tarafından oluşturulan modül haritalarını kullanmalıdır. Belirtilirse Bazel, bu hedef için bir modül eşlemesi oluşturmaz ancak derleyici için sağlanan modül haritasıdır.
module_name

String; optional

Bu hedef için modül adını belirler. Modül adı varsayılan olarak tüm özel simgeler _ ile değiştirilir, ör. //foo/baz:bar, foo_baz_bar olarak içe aktarılabilir.
non_arc_srcs

List of labels; optional

Search Ads 360'ı oluşturmak için işlenen Objective-C dosyalarının listesi kitaplık hedefi olacaktır. Bu özellikteki dosyalar, srcs özelliğine sahiptir ancak ARC etkinleştirilmeden derlenir.
pch

Label; optional

Derlenen her kaynak dosyasının başına eklenecek başlık dosyası (her iki yay da) ve yay dışı). BUILD dosyalarında pch dosyalarının kullanılması önerilmez ve bu bu önerinin sonlandırıldığı kabul edilir. pch dosyaları aslında önceden derlenmediğinden geliştirilme sürecidir. Bunun yerine küresel bir bağımlılık söz konusudur. Bir derlemeden doğrudan ihtiyaç duyduğunuz verileri de dahil ederek, verimlilik açısından kaynaklarda bulabilirsiniz.
runtime_deps

List of labels; optional

Çalışma zamanında geç yüklenen çerçeve hedeflerinin listesi. Bunlar, uygulama paketi kullanıyor ancak derleme sırasında bağlı olmayanlar.
sdk_dylibs

List of strings; optional

Bağlantı oluşturulacak SDK .dylib kitaplıklarının adları. Örneğin, "libz" veya "libarşiv". "libc++" ikili programda C++ veya Bağımlılık ağacındaki Objective-C++ kaynakları. Bir ikili programı bağlarken ikili programın geçişli bağımlılık grafiğinde adı geçen tüm kitaplıklar kullanılır.
sdk_frameworks

List of strings; optional

Bağlantı oluşturulacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore"). "UIKit" ve "Temel" 2020'den itibaren iOS, tvOS, visionOS ve ve watchOS platformları kullandığınızdan emin olun. macOS için yalnızca "Temel" her zaman dahil edilir.

Üst düzey bir Apple ikili programına bağlanırken, söz konusu ikili programın geçişli bağımlılık grafikleri bağlantılıdır.

sdk_includes

List of strings; optional

Bu hedefe eklenecek #include/#import arama yolunun listesi ve her yolun göreceli olduğu hedeflere bağlı olarak $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

C, C++, Objective-C ve Objective-C++ dosyalarını içeren bu kuraldaki kaynak dosyalar veya bu kuralın kullanıcıları tarafından başlık olarak dahil edilir kitaplığını açar. HDR'lerin aksine, bunlar kaynaklar.
weak_sdk_frameworks

List of strings; optional

Zayıf şekilde bağlantı kurulacak SDK çerçevelerinin adları. Örneğin, "MediaAccessibility" (Medya Erişilebilirliği). Düzenli olarak bağlanmış SDK çerçeveleri, simgeler birbirine çok benzer ya da zayıf bağlantılı çerçevelere mevcut olmayanlardır.

available_xcodes

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

Bu kuralın iki hedefine bir xcode_config kural örneğine bağlı olarak, uzaktan ve yerel olarak kullanılabilen xcode sürümlerini belirtir. Böylece toplu olarak kullanılabilen xcode'lardan resmi bir xcode sürümü seçebilirsiniz.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

default

Label; required; nonconfigurable

Bu platform için varsayılan xcode sürümü.
versions

List of labels; optional; nonconfigurable

Bu platformda kullanılabilen xcode sürümleridir.

xcode_config

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

--xcode_version_config derlemesi, bu kuralın tek bir hedefine referans verebilir flag'ini, --xcode_version işaretini kabul edilen bir resmi xcode sürümüne çevirin. Bu şekilde kayıtlı birkaç takma addan resmi bir xcode sürümü seçebilirsiniz.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

default

Label; optional; nonconfigurable

Kullanılacak varsayılan resmi xcode sürümü. Sağlanan xcode_version hedefi tarafından belirtilen sürüm, xcode_version derleme işareti belirtilmedi. Bu, şu durumlarda gereklidir: versions ayarlandı. remote_versions veya local_versions ayarlandı.
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

Kabul edildi: 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_visionos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)

Söz konusu xcode sürümü için kabul edilebilir takma adlara sahip tek bir resmi xcode sürümünü gösterir. xcode_config kuralını inceleyin.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

default_ios_sdk_version

String; optional; nonconfigurable

Bu xcode sürümü kullanılırken varsayılan olarak kullanılan iOS SDK sürümü. ios_sdk_version derleme işareti, burada belirtilen değeri geçersiz kılar.
default_macos_sdk_version

String; optional; nonconfigurable

Bu xcode sürümü kullanılırken varsayılan olarak kullanılan macosx SDK sürümü. macos_sdk_version derleme işareti, burada belirtilen değeri geçersiz kılar.
default_tvos_sdk_version

String; optional; nonconfigurable

Bu xcode sürümü kullanılırken varsayılan olarak kullanılan tvos SDK sürümü. tvos_sdk_version derleme işareti, burada belirtilen değeri geçersiz kılar.
default_visionos_sdk_version

String; optional; nonconfigurable

Bu xcode sürümü kullanılırken varsayılan olarak kullanılan visionos SDK sürümü. visionos_sdk_version derleme işareti, burada belirtilen değeri geçersiz kılar.
default_watchos_sdk_version

String; optional; nonconfigurable

Bu xcode sürümü kullanılırken varsayılan olarak kullanılan watchos SDK sürümü. watchos_sdk_version derleme işareti, burada belirtilen değeri geçersiz kılar.
version

String; required; nonconfigurable

Bir Xcode sürümünün resmi sürüm numarası.