Objective-C Kuralları

Sorun bildir Kaynağı görüntüle Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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. Bu dosyalar daha sonra objc_library ve objc_binary kurallarının bağımlılıkları olarak kullanılabilir. J2ObjC'nin kendisiyle ilgili ayrıntılı bilgileri J2ObjC sitesinde bulabilirsiniz.

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

j2objc_library hedefinde bulunan çevrilmiş dosyaların, derleme seçenekleri özelliklerde belirtilmemiş bir objc_library kuralının kaynaklarıyla aynı yapılandırma olan varsayılan derleme yapılandırması kullanılarak derleneceğini lütfen unutmayın.

Ayrıca, oluşturulan kod kaynak düzeyinde değil hedef düzeyinde yinelenenleri kaldırır. 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ı bağımlı olabilecek ayrı bir ortak hedefe taşımaktır.

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

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

Objective-C'ye dönüştürülecek Java dosyalarını içeren j2objc_library, java_library, java_import ve java_proto_library hedeflerinin listesi.

java_library, java_import, exports, deps ve runtime_deps aracılığıyla geçişli olarak erişilebilen tüm hedefler (Java ek açıklaması işleme tarafından oluşturulan dosyalar dahil) çevrilip derlenir. Belirtilmemiş srcjar 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ı şekilde çalışır. srcs içinde yer alan her .java kaynak dosyası için java_library, karşılık gelen bir .h ve .m kaynak dosyası oluşturulur. srcs veya java_import'ün java_library ya da srcjar bölümlerinde yer alan her kaynak JAR'ı için, bu JAR'ın tüm kodlarını içeren 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öreceli yoludur. Örneğin, //some/package/foo.java öğesinin içe aktarma yolu some/package/foo.h, //some/package/bar.srcjar öğesinin ise some/package/bar.h'dür.

proto_library kuralları bu kuralın geçişli kapanımındaysa J2ObjC protos'ları da ikili düzeyde oluşturulur, derlenir ve bağlanır. Proto //some/proto/foo.proto için kullanıcılar, import path some/proto/foo.j2objc.pb.h kullanarak oluşturulan koda başvurabilir.

entry_classes

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

Çevrilmiş ObjC karşılıklarına kullanıcı ObjC kodu tarafından doğrudan referans verilecek Java sınıflarının listesi. --j2objc_dead_code_removal işareti etkinse bu özellik zorunludur. Java sınıfları, Java Dil Spesifikasyonu'nda tanımlandığı şekilde kanonik adlarıyla belirtilmelidir. --j2objc_dead_code_removal işareti belirtildiğinde, giriş sınıflarının listesi geçişli olarak toplanır ve ölü kod analizi yapmak için giriş noktaları olarak kullanılır. Kullanılmayan sınıflar daha sonra nihai ObjC uygulama paketinden kaldırılır.
jre_deps

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

Bu j2objc_library kuralı tarafından çevrilen tüm Java kodunun gerektirdiği ek JRE emülasyon kitaplıklarının listesi. Varsayılan olarak yalnızca temel JRE işlevleri bağlanı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, derlenmiş statik bir kitaplığı .a dosyası şeklinde kapsar. Ayrıca, objc_library tarafından desteklenen özellikler kullanılarak 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; zorunlu

Bu hedef için benzersiz bir ad.

deps

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

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

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

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

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

Modüller etkinleştirilmişse bunlar kaynaktan ayrı olarak derlenir.

Boole değeri; varsayılan değer False'dır.

1. Bu kitaplığa (doğrudan veya dolaylı olarak) bağlı olan tüm paketler ya da ikili dosyalar, srcs ve non_arc_srcs içinde listelenen dosyaların tüm nesne dosyalarına bağlanır. Bu dosyaların bazıları, ikili dosya tarafından referans verilen sembolleri içermese bile bu işlem gerçekleşir. Bu, kodunuz ikilideki kod tarafından açıkça çağrılmıyorsa (ör. kodunuz, bir hizmet tarafından sağlanan geri çağırma işlevini almak için kaydediliyorsa) kullanışlıdır.
archives

Etiket listesi; zorunlu

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

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

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

Yollar, paket dizinine göre yorumlanır ve gerçek istemci kökünün yanı sıra genfiles ve bin kökleri (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir) de dahil edilir.

COPTS'tan farklı olarak, bu işaretler bu kural ve buna bağlı olan her kural için eklenir. (Not: bağlı olduğu kurallar değil!) Bu işlem, geniş kapsamlı etkilere neden olabileceğinden çok dikkatli olun. Şüpheye düştüğünüz durumlarda bunun yerine COPTS'a "-iquote" işaretleri ekleyin.

sdk_dylibs

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

Bağlanacak 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++ kaynakları varsa "libc++" otomatik olarak eklenir. Bir ikili dosya bağlandığında, bu ikili dosyanın geçişli bağımlılık grafiğinde belirtilen tüm kitaplıklar kullanılır.
sdk_frameworks

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

Bağlanılacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore"). iOS, tvOS, visionOS ve watchOS platformları için derleme yaparken "UIKit" ve "Foundation" her zaman dahil edilir. macOS'te yalnızca "Foundation" her zaman dahil edilir.

Üst düzey bir Apple ikilisi bağlanırken bu ikilinin 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 []'dır.

Bu hedefe ve tüm bağımlı hedeflere eklenecek #include/#import arama yollarının listesi. Her yol, $(SDKROOT)/usr/include ile ilgilidir.
textual_hdrs

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

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

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

Zayıf bağlantı oluşturulacak SDK çerçevelerinin adları. Örneğin, "MediaAccessibility". Düzenli olarak bağlanan SDK çerçevelerinden farklı olarak, zayıf şekilde bağlanan çerçevelerdeki semboller, çalışma zamanında mevcut olmadıkları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, verilen 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 değer []'dir.

Son paketi oluşturmak için birbirine bağlanan hedeflerin listesi.
srcs

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

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, check-in yaptığınız dosyalar ve oluşturulan tüm dosyalardır. Kaynak dosyalar, Clang ile .o dosyaları halinde derlenir. Başlık dosyaları, bu hedefin srcs özelliğindeki herhangi bir kaynak veya başlık tarafından eklenebilir/içe aktarılabilir ancak hdrs'deki başlıklar veya bu kurala bağlı olan hedefler tarafından eklenemez/içe aktarılamaz. Ayrıca, önceden derlenmiş .o dosyaları da kaynak olarak verilebilir. Eksik sembol bağlayıcı hatalarını önlemek için sağlanan .o dosyalarının ve derlemenin mimarisinde tutarlılık olduğundan emin olun.
hdrs

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

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

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

Modüller etkinleştirilmişse bunlar kaynaktan ayrı olarak derlenir.

Boole değeri; varsayılan değer False'dır.

1. Bu kitaplığa (doğrudan veya dolaylı olarak) bağlı olan tüm paketler ya da ikili dosyalar, srcs ve non_arc_srcs içinde listelenen dosyaların tüm nesne dosyalarına bağlanır. Bu dosyaların bazıları, ikili dosya tarafından referans verilen sembolleri içermese bile bu işlem gerçekleşir. Bu, kodunuz ikilideki kod tarafından açıkça çağrılmıyorsa (ör. kodunuz, bir hizmet tarafından sağlanan geri çağırma işlevini almak için kaydediliyorsa) kullanışlıdır.
copts

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

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

Oluşturulan Xcode projesi için, copts'taki "-I" işaretleri kullanılarak belirtilen dizin yollarının ayrıştırıldığını, göreli yollar olması durumunda "$(WORKSPACE_ROOT)/" ile öneklenerek ilişkili Xcode hedefinin başlık arama yollarına eklendiğini unutmayın.

defines

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

Derleyiciye iletilecek ek -D işaretleri. KEY=VALUE biçiminde veya yalnızca KEY biçiminde olmalıdır ve yalnızca bu hedef için derleyiciye (copts olduğu gibi) değil, aynı zamanda bu hedefin tüm objc_ bağımlılarına da iletilir. "Değişken oluştur" yerine koyma ve Bourne kabuğu belirteçleştirme işlemine tabidir.
enable_modules

Boole değeri; varsayılan değer False'dır.

Clang modülü desteğini etkinleştirir (-fmodules aracılığıyla). Bu değeri 1 olarak ayarladığınızda sistem başlıklarını ve diğer hedefleri @import ile içe aktarabilirsiniz: @import UIKit; @import path_to_package_target;
implementation_deps

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

Kitaplık hedefinin bağlı olduğu diğer kitaplıkların listesi. deps'dan farklı olarak, bu kitaplıkların (ve tüm geçişli bağımlılıklarının) başlıkları ve dahil etme yolları yalnızca bu kitaplığın derlenmesi için kullanılır ve kendisine bağlı olan kitaplıklar için kullanılmaz. implementation_deps ile belirtilen kitaplıklar, bu kitaplığa bağlı ikili hedeflerde hâlâ bağlıdır.
includes

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

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

Yollar, paket dizinine göre yorumlanır ve gerçek istemci kökünün yanı sıra genfiles ve bin kökleri (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir) de dahil edilir.

COPTS'tan farklı olarak, bu işaretler bu kural ve buna bağlı olan her kural için eklenir. (Not: bağlı olduğu kurallar değil!) Bu işlem, geniş kapsamlı etkilere neden olabileceğinden çok dikkatli olun. Şüpheye düştüğünüz durumlarda bunun yerine COPTS'a "-iquote" işaretleri ekleyin.

linkopts

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

Bağlayıcıya geçirilecek ek işaretler.
module_map

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

Bu hedef için özel bir Clang modül eşlemesi. Özel modül haritası kullanılması önerilmez. Kullanıcıların çoğu, 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 hedef için modül adını ayarlar. 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

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

ARC'yi KULLANMAYAN kitaplık hedefi 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 (hem arc hem de arc olmayan) başına eklenecek üstbilgi dosyası. BUILD dosyalarında pch dosyalarının kullanılması kesinlikle önerilmez ve bu işlevin kullanımdan kaldırıldığı kabul edilmelidir. pch dosyaları aslında önceden derlenmediğinden bu, derleme hızını artırmaz. Bunun yerine, yalnızca genel bir bağımlılık söz konusudur. Derleme verimliliği açısından, ihtiyacınız olanı doğrudan kaynaklarınıza eklemeniz daha iyi olur.
sdk_dylibs

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

Bağlanacak 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++ kaynakları varsa "libc++" otomatik olarak eklenir. Bir ikili dosya bağlandığında, bu ikili dosyanın geçişli bağımlılık grafiğinde belirtilen tüm kitaplıklar kullanılır.
sdk_frameworks

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

Bağlanılacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore"). iOS, tvOS, visionOS ve watchOS platformları için derleme yaparken "UIKit" ve "Foundation" her zaman dahil edilir. macOS'te yalnızca "Foundation" her zaman dahil edilir.

Üst düzey bir Apple ikilisi bağlanırken bu ikilinin 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 []'dır.

Bu hedefe ve tüm bağımlı hedeflere eklenecek #include/#import arama yollarının listesi. Her yol, $(SDKROOT)/usr/include ile ilgilidir.
textual_hdrs

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

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

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

Zayıf bağlantı oluşturulacak SDK çerçevelerinin adları. Örneğin, "MediaAccessibility". Düzenli olarak bağlanan SDK çerçevelerinden farklı olarak, zayıf şekilde bağlanan çerçevelerdeki semboller, çalışma zamanında mevcut olmadıklarında hataya neden olmaz.

available_xcodes

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

Bu kuralın iki hedefi, uzaktan ve yerel olarak kullanılabilen Xcode sürümlerini belirtmek için bir xcode_config kural örneği tarafından kullanılabilir. Bu, toplu olarak kullanılabilen Xcode'lar arasından resmi bir Xcode sürümünün seçilmesine olanak tanır.

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

default

Etiket; yapılandırılamaz; zorunlu

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

Etiket listesi; yapılandırılamaz; varsayılan değer []

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)

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

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

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ü. xcode_version hedefi tarafından belirtilen sürüm, xcode_version derleme işareti belirtilmediğinde kullanılır. Herhangi bir versions ayarlandıysa bu özellik gereklidir. remote_versions veya local_versions ayarlanmışsa bu özellik ayarlanmayabilir.
local_versions

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

Yerel olarak kullanılabilen xcode_version hedefler. 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ılamaz; varsayılan değer None

Uzaktan kullanılabilen xcode_version hedefler. 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 ayarlanmayabilir.
versions

Etiket listesi; yapılandırılamaz; varsayılan değer []

Kullanılabilecek kabul edilen xcode_version hedefler. xcode_version derleme işaretinin değeri, belirtilen xcode_version hedeflerden herhangi birinin diğer adlarından veya sürüm numarasından biriyle eşleşirse eşleşen hedef kullanılır. remote_versions veya local_versions ayarlanmışsa bu özellik ayarlanmayabilir.

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)

Bu Xcode sürümü için kabul edilebilir diğer adlarla birlikte tek bir resmi Xcode sürümünü temsil eder. 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 ""

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

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

Bu Xcode sürümü kullanılırken varsayılan olarak kullanılan macOS 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 ""

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

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

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

Dize; yapılandırılamaz; 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ılandırılamaz; zorunlu

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