Objective-C Kuralları

Sorun bildir Kaynağı görüntüle Nightly · 7.4 .

Kurallar

j2objc_library

Kural kaynağını görüntüleme
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 kaynak dosyalarını Objective-C'ye çevirmek için J2ObjC'yi kullanır. Daha sonra bu dil, objc_library ve objc_binary kurallarına bağımlılık olarak kullanılabilir. J2ObjC hakkında ayrıntılı bilgiyi J2ObjC sitesinde bulabilirsiniz.

Özel J2ObjC derleme işaretleri, komut satırında --j2objc_translation_flags derleme işareti kullanılarak belirtilebilir.

Bir j2objc_library hedefine eklenen çevrilmiş dosyaların varsayılan derleme yapılandırmasıyla derleneceğini lütfen unutmayın. Bu, özelliklerde hiçbir derleme seçeneği belirtilmediği bir objc_library kuralının kaynaklarıyla aynı yapılandırmadır.

Ayrıca, oluşturulan kod kaynak düzeyinde değil hedef düzeyde tekilleştirilir. Aynı Java kaynak dosyalarını içeren iki farklı Java hedefiniz varsa bağlantı sırasında yinelenen simge hatası görebilirsiniz. Bu sorunu çözmenin doğru yolu, paylaşılan Java kaynak dosyalarını güvenilir olabilecek ayrı bir ortak hedefe taşımaktır.

Bağımsız değişkenler

Özellikler
name

Ad; gerekli

Bu hedef için benzersiz bir ad.

deps

Etiket listesi; varsayılan []

Objective-C'ye derlenecek Java dosyalarını içeren j2objc_library, java_library, java_import ve java_proto_library hedeflerinin listesi.

exports, deps ve runtime_deps aracılığıyla aktarmalı olarak ulaşılabilen tüm java_library ve java_import hedefleri, Java ek açıklama işleme tarafından oluşturulan dosyalar da dahil olmak üzere çevrilir ve derlenir. srcjar belirtilmeyen code>java_import hedefleri desteklenmez.

J2ObjC çevirisi, geçişli kapatmaya dahil edilen kaynak Java kaynak dosyalarının türüne bağlı olarak farklı çalışır. java_library projesinin srcs öğesine dahil edilen her .java kaynak dosyası için karşılık gelen bir .h ve .m kaynak dosyası oluşturulur. srcs / java_library veya srcjar / java_import içinde yer alan her kaynak jar için ilgili jar dosyasının tüm koduyla karşılık gelen bir .h ve .m kaynak dosyası oluşturulur.

Kullanıcılar, J2ObjC tarafından oluşturulan başlık dosyalarını kodlarına aktarabilir. Bu dosyaların içe aktarma yolları, orijinal Java yapılarının köke göre yoludur. Örneğin, //some/package/foo.java içe aktarma yolu some/package/foo.h, //some/package/bar.srcjar ise some/package/bar.h değerine sahip

proto_library kuralları bu kuralın geçişli kapanışındaysa J2ObjC protoları da oluşturulur, derlenir ve ikili düzeyde bağlanır. //some/proto/foo.proto prototipi için kullanıcılar, some/proto/foo.j2objc.pb.h içe aktarma yolunu kullanarak oluşturulan koda referans verebilir.

entry_classes

Dize listesi; varsayılan değer []'tir.

Çevrilmiş ObjC karşılıklarına doğrudan kullanıcının ObjC kodu tarafından referans verilecek Java sınıflarının listesi. --j2objc_dead_code_removal işareti açıksa bu özellik gereklidir. Java sınıfları, Java Dil Spesifikasyonu'nda tanımlandığı şekilde standart adlarıyla belirtilmelidir. --j2objc_dead_code_removal işareti belirtildiğinde giriş sınıflarının listesi aktarmalı olarak toplanır ve ölü kod analizini gerçekleştirmek için giriş noktaları olarak kullanılır. Kullanılmayan sınıflar nihai ObjC uygulama paketinden kaldırılır.
jre_deps

Etiket listesi; varsayılan []

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

objc_import

Kural kaynağını görüntüleme
objc_import(name, deps, 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ş statik bir kitaplığı .a dosyası biçiminde kapsar. Ayrıca, objc_library tarafından desteklenen aynı özellikleri kullanarak başlıkların ve kaynakların dışa aktarılmasına da olanak tanır.

Bağımsız değişkenler

Özellikler
name

Ad; gerekli

Bu hedef için benzersiz bir ad.

deps

Etiketler listesi; varsayılan değer []'dir.

Bu hedefin bağlı olduğu hedeflerin listesi.
hdrs

Etiketler listesi; varsayılan değer []'dir.

Kaynakların bağımlı kurallara dahil etmesi için bu kitaplık tarafından yayınlanan C, C++, Objective-C ve Objective-C++ başlık dosyalarının listesi.

Bu üstbilgiler, kitaplığın herkese açık arayüzünü tanımlar ve bu kuraldaki veya bağımlı kurallardaki kaynaklar tarafından dahil edilmek üzere kullanıma sunulur. Bu kitaplığın bir istemcisi tarafından eklenmesi amaçlanmayan başlıklar, srcs özelliğinde listelenmelidir.

Modüller etkinse bunlar kaynaktan ayrı olarak derlenir.

Boole; varsayılan değer False

1 ise bu kitaplığa (doğrudan veya dolaylı olarak) bağlı olan tüm paketler veya ikili programlar, srcs ve non_arc_srcs'te listelenen dosyaların tüm nesne dosyalarını bağlar (bazılarında ikili program tarafından referans verilen simge olmasa bile). Bu, kodunuz ikili programda kod tarafından açıkça çağrılmadığında (ör. kodunuz bir hizmet tarafından sağlanan bir geri çağırmayı almak için kaydedildiyse) yararlıdır.
archives

Etiketler listesi; zorunlu

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

Dize listesi; varsayılan değer: []

Bu hedefe ve tüm bağlı hedeflere eklenecek #include/#import arama yollarının listesi. Bu, #import/#include ifadelerinde çalışma alanı yolunun tamamını belirtmeyen üçüncü taraf ve açık kaynak kitaplıkları desteklemek içindir.

Yollar, paket dizinine göre yorumlanır ve gendosyalar ile bin kökleri (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir), gerçek istemci köküne ek olarak dahil edilir.

COPTS'tan farklı olarak bu işaretler bu kural ve bu kurala bağlı her kural için eklenir. (Not: Bu kuralların bağlı olduğu kurallar değildir.) Geniş kapsamlı etkileri olabileceği için çok dikkatli olun. Şüpheye düştüğünüzde bunun yerine COPTS öğesine "-iquote" işaretleri ekleyin.

sdk_dylibs

Dize listesi; varsayılan değer: []

Bağlantı oluşturulacak SDK .dylib kitaplıklarının adları. Örneğin, "libz" veya "libarchive". İkili dosyanın bağımlılık ağacında C++ veya Objective-C++ kaynağı varsa "libc++" otomatik olarak dahil edilir. Bir ikili bağlanırken, söz konusu ikili dosyadaki geçişli bağımlılık grafiğinde adı geçen tüm kitaplıklar kullanılır.
sdk_frameworks

Dize listesi; varsayılan değer []'tir.

Bağlantı oluşturulacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore"). "UIKit" ve "Temel" konuları iOS, tvOS, visionOS ve watchOS platformları için derlenirken her zaman dahil edilir. macOS için her zaman yalnızca "Temel" dahil edilir.

Üst düzey bir Apple ikili programını bağlarken ikili programın geçişli bağımlılık grafiğinde listelenen tüm SDK çerçeveleri bağlanır.

sdk_includes

Dize listesi; varsayılan değer: []

Bu hedefe eklenecek #include/#import arama yollarının ve her yolun $(SDKROOT)/usr/include'ye göreli olduğu tüm bağımlı hedeflerin listesi.
textual_hdrs

Etiket listesi; varsayılan []

Bu kuraldaki kaynak dosyalar veya bu kitaplığın kullanıcıları tarafından başlık olarak dahil edilen C, C++, Objective-C ve Objective-C++ dosyalarının listesi. hdrs'den farklı olarak bunlar kaynaklardan ayrı olarak derlenmez.
weak_sdk_frameworks

Dize listesi; varsayılan değer []'tir.

Zayıf bağlantı kurulacak SDK çerçevelerinin adları. Örneğin, "MediaAccessibility". Düzenli olarak bağlı SDK çerçevelerinin aksine, zayıf bağlantılı çerçevelerin sembolleri, çalışma zamanında mevcut olmadığında hataya neden olmaz.

objc_library

Kural kaynağını görüntüleme
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, 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

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

Etiket listesi; varsayılan []

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

Etiket listesi; varsayılan []

Kitaplık hedefi oluşturmak için işlenen C, C++, Objective-C ve Objective-C++ kaynak ve başlık dosyalarının ve/veya (".s", ".S" veya ".asm") derleme kaynak dosyalarının listesi. Bunlar, kontrol edilen dosyalarınızın yanı sıra oluşturulan dosyalardır. Kaynak dosyalar, Clang ile .o dosyaları olarak derlenir. Başlık dosyaları, bu hedefin srcs özelliğindeki herhangi bir kaynak veya başlık tarafından dahil edilebilir/ithal edilebilir ancak hdrs'deki başlıklar veya bu kurala bağlı hedefler tarafından dahil edilemez. Ayrıca, önceden derlenmiş .o dosyaları da src olarak verilebilir. Eksik simge bağlayıcı hatalarını önlemek için sağlanan .o dosyalarının ve derlemenin mimarisinde tutarlılık sağlamaya dikkat edin.
hdrs

Etiket listesi; varsayılan []

Bağımlı kurallardaki kaynaklar tarafından dahil edilmek üzere bu kitaplık tarafından yayınlanan C, C++, Objective-C ve Objective-C++ başlık dosyalarının listesi.

Bu üstbilgiler, kitaplığın herkese açık arayüzünü tanımlar ve bu kuraldaki veya bağımlı kurallardaki kaynaklar tarafından dahil edilmek üzere kullanıma sunulur. Bu kitaplığın bir istemcisi tarafından eklenmesi amaçlanmayan başlıklar, srcs özelliğinde listelenmelidir.

Modüller etkinse bunlar kaynaktan ayrı olarak derlenir.

Boole; varsayılan değer False

1 ise bu kitaplığa (doğrudan veya dolaylı olarak) bağlı olan tüm paketler veya ikili programlar, srcs ve non_arc_srcs'te listelenen dosyaların tüm nesne dosyalarını bağlar (bazılarında ikili program tarafından referans verilen simge olmasa bile). Bu, kodunuz ikili programda kod tarafından açıkça çağrılmadığında (ör. kodunuz bir hizmet tarafından sağlanan bir geri çağırmayı almak için kaydedildiyse) yararlıdır.
copts

Dize listesi; varsayılan değer []'tir.

Derleyiciye iletilecek ek işaretler. "Değişken oluştur" yerine koyma işlemine ve Bourne kabuğu Bu işaretler yalnızca bu hedef için geçerli olur, bu hedefin bağlı olduğu veya bu hedefe bağlı olan hedefler için geçerli olmaz.

Oluşturulan Xcode projesi için copt'lerde "-I" işaretleri kullanılarak belirtilen dizin yollarının ayrıştırıldığını, göreli yollar olduklarında başlarına "$(WORKSPACE_ROOT)/" eklendiğini ve ilişkili Xcode hedefinin başlık arama yollarına eklendiğini unutmayın.

defines

Dize listesi; varsayılan değer []'tir.

Derleyiciye aktarılacak fazladan -D işaretleri. KEY=VALUE veya KEY biçiminde olmalıdır ve yalnızca bu hedefin derleyicisine (copts gibi) değil, bu hedefin tüm objc_ bağımlılarına da iletilir. "Değişken oluşturma" değişikliğine ve Bourne kabuk belirtkelemeye tabidir.
enable_modules

Boole; varsayılan değer False'tir

clang modülü desteğini etkinleştirir (-fmodules aracılığıyla). Bu değer 1 olarak ayarlandığında sistem üstbilgilerini ve diğer hedefleri @içe aktarmaya olanak tanır: @import UIKit; @import path_to_package_target;
implementation_deps

Etiket listesi; varsayılan []

Kitaplık hedefine bağlı diğer kitaplıkların listesi. deps işlevinin aksine, bu kitaplıkların başlıkları ve yolları (ve tüm geçişli depoları) yalnızca bu kitaplığın derlenmesi için kullanılır, ona bağlı olan kitaplıklar için kullanılmaz. implementation_deps ile belirtilen kitaplıklar, bu kitaplığa dayanan ikili hedeflerde bağlı kalmaya devam eder.
includes

Dize listesi; varsayılan değer: []

Bu hedefe ve tüm bağlı hedeflere eklenecek #include/#import arama yollarının listesi. Bu, #import/#include ifadelerinde çalışma alanı yolunun tamamını belirtmeyen üçüncü taraf ve açık kaynak kitaplıkları desteklemek içindir.

Yollar, paket dizine göre yorumlanır ve gerçek istemci köküne ek olarak genfile'ler ve bin kökleri (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir) dahil edilir.

COPTS'tan farklı olarak bu işaretler bu kural ve bu kurala bağlı her kural için eklenir. (Not: Bu, bağlı olduğu kurallar değildir.) Bunun geniş kapsamlı etkileri olabileceğinden çok dikkatli olun. Şüpheye düştüğünüz durumlarda bunun yerine COPTS alanına "-iquote" işaretleri ekleyin.

linkopts

Dize listesi; varsayılan değer: []

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

Etiket; varsayılan değer None

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

Dize; varsayılan değer ""

Bu hedefin modül adını belirler. Varsayılan olarak modül adı, tüm özel sembollerin _ ile değiştirildiği hedef yoldur. Örneğin, //foo/baz:bar, foo_baz_bar olarak içe aktarılabilir.
non_arc_srcs

Etiketler listesi; varsayılan değer []'dir.

ARC'yi KULLANMAYAN kitaplık hedefini oluşturmak için işlenen Objective-C dosyalarının listesi. Bu özellikteki dosyalar, srcs özelliğindeki dosyalara çok benzer şekilde işlenir ancak ARC etkinleştirilmeden derlenir.
pch

Etiket; varsayılan değer None'dir.

Derlenen her kaynak dosyanın başına eklenecek başlık dosyası (hem yay hem de yay dışı). BUILD dosyalarında pch dosyalarının kullanılması önerilmez ve bu dosyaların desteği sonlandırılmıştır. Pch dosyaları aslında önceden derlenmemiş olduğundan bu, bir derleme hızı geliştirmesi değildir ve yalnızca küresel bir bağımlılıktır. Derleme verimliliği açısından, ihtiyacınız olan öğeleri doğrudan ihtiyaç duyduğunuz kaynaklara eklemeniz daha iyidir.
sdk_dylibs

Dize listesi; varsayılan değer []'tir.

Bağlantı oluşturulacak SDK .dylib kitaplıklarının adları. Örneğin, "libz" veya "libarchive". İkili dosyanın bağımlılık ağacında C++ veya Objective-C++ kaynağı varsa "libc++" otomatik olarak dahil edilir. Bir ikili bağlanırken, söz konusu ikili dosyadaki geçişli bağımlılık grafiğinde adı geçen tüm kitaplıklar kullanılır.
sdk_frameworks

Dize listesi; varsayılan değer []'tir.

Bağlantı oluşturulacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore"). "UIKit" ve "Temel" konuları iOS, tvOS, visionOS ve watchOS platformları için derlenirken her zaman dahil edilir. macOS için her zaman yalnızca "Temel" dahil edilir.

Üst düzey bir Apple ikili programını bağlarken ikili programın geçişli bağımlılık grafiğinde listelenen tüm SDK çerçeveleri bağlanır.

sdk_includes

Dize listesi; varsayılan değer: []

Her yolun $(SDKROOT)/usr/include ile göreli olduğu, bu hedefe ve bağlı tüm hedeflere eklenecek #include/#import arama yolunun listesi.
textual_hdrs

Etiket listesi; varsayılan []

Bu kuraldaki kaynak dosyalar veya bu kitaplığın kullanıcıları tarafından başlık olarak dahil edilen C, C++, Objective-C ve Objective-C++ dosyalarının listesi. hdrs'den farklı olarak bunlar kaynaklardan ayrı olarak derlenmez.
weak_sdk_frameworks

Dize listesi; varsayılan değer []'tir.

Zayıf bağlantı kurulacak SDK çerçevelerinin adları. Örneğin, "MediaAccessibility". Düzenli olarak bağlı SDK çerçevelerinin aksine, zayıf bağlantılı çerçevelerin sembolleri, çalışma zamanında mevcut olmadığında hataya neden olmaz.

available_xcodes

Kural kaynağını göster
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

Uzaktan ve yerel olarak kullanılabilen xcode sürümlerini belirtmek için bir xcode_config kural örneği bu kuralın iki hedefine bağlı olabilir. Böylece toplu olarak kullanılabilen xcode'lardan resmi bir xcode sürümü seçebilirsiniz.

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

default

Etiket; yapılandırılamaz; gerekli

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

Etiket listesi; yapılandırılabilir değil; varsayılan []

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

xcode_config

Kural kaynağını görüntüleme
xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

--xcode_version işaretini kabul edilen bir resmi xcode sürümüne çevirmek için --xcode_version_config derleme işaretiyle bu kuralın tek bir hedefine referans verilebilir. Bu, kayıtlı takma adlar arasından resmi bir xcode sürümünün seçilmesine olanak tanır.

Bağımsız değişkenler

Özellikler
name

Ad; gerekli

Bu hedef için benzersiz bir ad.

default

Etiket; yapılandırılamaz; varsayılan değer None

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 belirtilmediyse kullanılır. Herhangi bir versions ayarlanmışsa bu gereklidir. remote_versions veya local_versions ayarlanmışsa bu ayar yapılamaz.
local_versions

Etiket; yapılandırılmamış; varsayılan None

Yerel olarak kullanılabilen xcode_version hedefleri. Bunlar, karşılıklı olarak kullanılabilen bir sürüm seçmek için local_versions ile birlikte kullanılır. versions ayarlanmışsa bu ayarlanmayabilir.
remote_versions

Etiket; yapılandırılmamış; varsayılan None

Uzaktan kullanılabilen xcode_version hedefleri. Bunlar, karşılıklı olarak kullanılabilen bir sürüm seçmek için remote_versions ile birlikte kullanılır. versions ayarlanmışsa bu ayar yapılamaz.
versions

Etiket listesi; yapılandırılabilir değil; varsayılan []

Kullanılabilecek xcode_version hedef kabul edildi. xcode_version derleme işaretinin değeri, belirtilen xcode_version hedeflerinden herhangi birinin takma adlarından veya sürüm numarasıyla eşleşirse eşleşen hedef kullanılır. remote_versions veya local_versions ayarlanmışsa bu ayar yapılamaz.

xcode_version

Kural kaynağını görüntüleme
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

Ad; zorunlu

Bu hedef için benzersiz bir ad.

default_ios_sdk_version

Dize; yapılandırılamaz; varsayılan değer ""

Xcode'un bu sürümü kullanıldığında 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

Dize; yapılandırılabilir değil; varsayılan değer ""

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

Dize; yapılandırılamaz; varsayılan değer ""

Xcode'un bu 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

Dize; yapılandırılamaz; varsayılan değer ""

Xcode'un bu sürümü kullanıldığında 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

Dize; yapılandırılabilir değil; varsayılan değer ""

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

Dize; yapılamayan; gerekli

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