Objective-C Kuralları

Sorun bildir Kaynağı görüntüle Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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 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.

j2objc_library hedefine dahil edilen çevrilmiş dosyaların, varsayılan derleme yapılandırması kullanılarak derleneceğini lütfen unutmayın. Bu yapılandırma, özelliklerde derleme seçeneği belirtilmeyen bir objc_library kuralının kaynaklarıyla aynıdı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; zorunlu

Bu hedef için benzersiz bir ad.

deps

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

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'daki srcs içine dahil edilen her .java kaynak dosyası için karşılık gelen bir .h ve .m kaynak dosyası oluşturulur. java_library'un srcs veya java_import'ın srcjar bölümüne dahil edilen her kaynak jar için, söz konusu jar'ın tüm kodunu 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öre yoludur. Örneğin, //some/package/foo.java'in içe aktarma yolu some/package/foo.h, //some/package/bar.srcjar'nin ise some/package/bar.h

proto_library kuralları bu kuralın geçişli kapatmasındaysa J2ObjC proto'ları da ikili düzeyde oluşturulur, derlenir ve 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ının doğrudan kullanıcı ObjC kodu tarafından referans alınacağı 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 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

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

Bu j2objc_library kuralı tarafından çevrilen tüm Java kodlarının gerektirdiği ek JRE emülasyon kitaplıklarının listesi. Varsayılan olarak yalnızca temel JRE işlevi 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, önceden derlenmiş statik bir kitaplığı .a dosyası biçiminde kapsar. Ayrıca, objc_library tarafından desteklenen aynı özellikleri kullanarak üstbilgileri ve kaynakları dışa aktarmanıza da olanak tanır.

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

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 müşterisi tarafından dahil edilmemesi amaçlanan üstbilgiler, bunun yerine srcs özelliğinde listelenmelidir.

Modüller etkinse bunlar kaynaktan ayrı olarak derlenir.

Boole; varsayılan değer False'tir

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 programdaki 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 kaydoluyorsa) kullanışlı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 []'tir.

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.

sdk_dylibs

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

Bağlantı kurulacak 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ğlanacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore"). iOS, tvOS, visionOS ve watchOS platformları için derleme yapılırken "UIKit" ve "Foundation" her zaman dahil edilir. macOS için her zaman yalnızca "Foundation" dahil edilir.

Üst düzey bir Apple ikili dosyası bağlanırken, söz konusu ikili dosyanı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 []'tir.

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

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

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". Normal şekilde bağlanmış SDK çerçevelerinin aksine, zayıf bağlanmış çerçevelerden gelen simgeler, çalışma zamanında mevcut değilse hata oluşturmaz.

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

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

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

Etiketler 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, kontrol edilen dosyalarınızın yanı sıra oluşturulan dosyalardır. Kaynak dosyalar Clang ile .o dosyalarına 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ğladığınızdan emin olun.
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 müşterisi tarafından dahil edilmemesi amaçlanan üstbilgiler, bunun yerine srcs özelliğinde listelenmelidir.

Modüller etkinse bunlar kaynaktan ayrı olarak derlenir.

Boole; varsayılan değer False'tir

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 programdaki 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 kaydoluyorsa) kullanışlı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 projesinde, copts içinde "-I" işaretleri kullanılarak belirtilen dizin yollarının ayrıştırıldığını, göreli yollarsa "$(WORKSPACE_ROOT)/" ile başa 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 iletilecek ek -D işaretleri. Bunlar 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ştur" yerine koyma işlemine ve Bourne kabuğu
enable_modules

Boole; varsayılan değer False'tir

clang modülü desteğini etkinleştirir (-fmodules aracılığıyla). Bu değeri 1 olarak ayarladığınızda sistem üstbilgilerini ve diğer hedefleri @import edebilirsiniz: @import UIKit; @import path_to_package_target;
implementation_deps

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

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

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

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 []'tir.

Bağlantı oluşturucuya iletilecek 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. Çoğu kullanıcı, Bazel tarafından oluşturulan modül haritalarını kullanmalıdır. Belirtiliyse 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 ""'tir

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 üstbilgi dosyası (hem arc hem de arc olmayan). 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 derlenmediğinden bu, derleme hızını artıran bir özellik değil, yalnızca genel 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ı kurulacak 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ğlanacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore"). iOS, tvOS, visionOS ve watchOS platformları için derleme yapılırken "UIKit" ve "Foundation" her zaman dahil edilir. macOS için her zaman yalnızca "Foundation" dahil edilir.

Üst düzey bir Apple ikili dosyası bağlanırken, söz konusu ikili dosyanı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 []'tir.

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

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

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". Normal şekilde bağlanmış SDK çerçevelerinin aksine, zayıf bağlanmış çerçevelerden gelen simgeler, çalışma zamanında mevcut değilse hata oluşturmaz.

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 sayede, toplu olarak kullanılabilen xcode'lar arasından resmi bir xcode sürümü seçilebilir.

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

Etiketler 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 işaretini kabul edilen resmi bir xcode sürümüne çevirmek için --xcode_version_config derleme işareti tarafından 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; zorunlu

Bu hedef için benzersiz bir ad.

default

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

Kullanılacak Xcode'un varsayılan resmi sürümü. xcode_version derleme işareti belirtilmezse sağlanan xcode_version hedefi tarafından belirtilen sürüm kullanılır. Herhangi bir versions ayarlandıysa bu gereklidir. remote_versions veya local_versions ayarlanmışsa bu ayar yapılamaz.
local_versions

Etiket; yapılandırılamaz; varsayılan değer 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ılamaz; varsayılan değer 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 ayarlanmayabilir.
versions

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

Kullanılabilen kabul edilen xcode_version hedefleri. xcode_version derleme işaretinin değeri, verilen xcode_version hedeflerinden birinin takma adlarından veya sürüm numaralarından biriyle 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 adlar içeren 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 ""

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ılamaz; varsayılan değer ""

Xcode'un bu sürümü kullanıldığında 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ılamaz; varsayılan değer ""

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