Objective-C Kuralları

Sorun bildirin Kaynağı göster

Kurallar

j2objc_library

Kural kaynağını göster
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ı bilgilere J2ObjC sitesinden ulaşabilirsiniz.

Özel J2ObjC dönüştürme işaretleri, komut satırında derleme işareti --j2objc_translation_flags 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üvenebileceğiniz 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 aktarılacak Java dosyalarını içeren j2objc_library, java_library, java_import ve java_proto_library hedeflerinin listesi.

Java ek açıklama işleme ile oluşturulan dosyalar dahil olmak üzere exports, deps ve runtime_deps üzerinden geçişli olarak ulaşılabilen tüm java_library ve java_import hedefleri çevrilecek ve derlenecektir. srcjar belirtilmemiş code>java_import hedefleri için destek sunulmaz.

J2ObjC çevirisi, geçişli kapatmaya dahil edilen kaynak Java kaynak dosyalarının türüne bağlı olarak farklı şekilde ç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 veya java_import java_library ya da srcjar 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 yollarıdır. Ö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. Kullanıcılar, //some/proto/foo.proto protokolü için some/proto/foo.j2objc.pb.h içe aktarma yolunu kullanarak oluşturulan koda başvurabilir.

entry_classes

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

Ç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 bayrağı açıksa bu özellik gereklidir. Java sınıfları, Java Dil Spesifikasyonu tarafından tanımlandığı şekilde standart 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 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

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öster
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ş bir statik kitaplığı .a dosyası biçiminde içerir. 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

Etiket listesi; varsayılan []

Bu hedefin bağımlı olduğu hedeflerin listesi.
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 başlıklar, kitaplığın herkese açık arayüzünü tanımlar ve bu kuraldaki kaynaklar tarafından veya bağımlı kurallarda 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 bağlı olan (doğrudan veya dolaylı olarak) herhangi bir paket veya ikili program, bazıları ikili program tarafından başvurulan semboller içermese bile srcs ve non_arc_srcs içinde listelenen dosyalar için tüm nesne dosyalarına bağlantı verir. 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

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: []

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

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'nin aksine, bu işaretler bu kural ve ona 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 "libArşiv". İkili programın bağımlılık ağacında herhangi bir C++ veya Objective-C++ kaynağı varsa "libc++" otomatik olarak eklenir. 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

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

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. HDR'lerin aksine, bunlar kaynaklardan ayrı olarak derlenmez.
weak_sdk_frameworks

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

Zayıf şekilde 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öster
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; gerekli

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 hedefini oluşturmak için işlenen C, C++, Objective-C ve Objective-C++ kaynak ve üst bilgi dosyalarının ve/veya (".s", ".S" ya da ".asm") derleme kaynak dosyalarının listesi. Bunlar, giriş yaptığınız dosyalar ve oluşturulan dosyalardır. Kaynak dosyalar, Clang ile .o dosyaları olarak derlenir. Başlık dosyaları, bu hedefin srcs özelliğinde herhangi bir kaynak veya üst bilgi tarafından dahil edilebilir/içe aktarılabilir, ancak hdrs'deki başlıklar veya bu kurala bağlı herhangi bir hedef tarafından dahil edilemez. Ayrıca, önceden derlenmiş .o dosyaları src'ler olarak da 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 başlıklar, kitaplığın herkese açık arayüzünü tanımlar ve bu kuraldaki kaynaklar tarafından veya bağımlı kurallarda 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 bağlı olan (doğrudan veya dolaylı olarak) herhangi bir paket veya ikili program, bazıları ikili program tarafından başvurulan semboller içermese bile srcs ve non_arc_srcs içinde listelenen dosyalar için tüm nesne dosyalarına bağlantı verir. 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: []

Derleyiciye iletilecek ek işaretler. "Değişken oluşturma" değişikliğine ve Bourne kabuk belirtkelemeye tabidir. Bu flag'ler yalnızca bu hedef için geçerli olacak, bağımlı olduğu veya bağımlı olduğu hedefler için geçerli olmayacaktır.

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: []

Derleyiciye aktarılacak fazladan -D işaretleri. KEY=VALUE veya KEY biçiminde olmalıdırlar 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 iletilirler. "Değişken oluşturma" değişikliğine ve Bourne kabuk belirtkelemeye tabidir.
enable_modules

Boole; varsayılan değer False

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ığın hedeflediği 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ı 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 yolunun listesi. Bunun amacı, #import/#include ifadelerinde çalışma alanı yolunun tamamını belirtmeyen üçüncü taraf ve açık kaynaklı kitaplıkları desteklemektir.

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'nin aksine, bu işaretler bu kural ve ona 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.

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ü haritası. Özel modül haritasının 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 hedef için modül adını belirler. Varsayılan olarak modül adı, tüm özel simgelerin _ ile değiştirildiği hedef yoldur.Ör. //foo/baz:bar, foo_baz_bar olarak içe aktarılabilir.
non_arc_srcs

Etiket listesi; varsayılan []

ARC 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

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ı aktif olarak önerilmez. Bu durumun kullanımdan kaldırılmış olduğu düşünülmelidir. 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 baktığınızda, ihtiyacınız olan şeyi doğrudan kaynaklarınıza ihtiyaç duyduğunuz yerlere dahil etmeniz aslında daha iyidir.
sdk_dylibs

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

Bağlantı oluşturulacak SDK .dylib kitaplıklarının adları. Örneğin, "libz" veya "libArşiv". İkili programın bağımlılık ağacında herhangi bir C++ veya Objective-C++ kaynağı varsa "libc++" otomatik olarak eklenir. 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

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

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. HDR'lerin aksine, bunlar kaynaklardan ayrı olarak derlenmez.
weak_sdk_frameworks

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

Zayıf şekilde 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; gerekli

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

xcode_config

Kural kaynağını göster
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 şekilde kayıtlı birkaç takma addan resmi bir xcode sürümü seçebilirsiniz.

Bağımsız değişkenler

Özellikler
name

Ad; gerekli

Bu hedef için benzersiz bir ad.

default

Etiket; yapılandırılmamış; varsayılan 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ılmayabilir.
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 ayarlanmayabilir.
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ılmayabilir.

xcode_version

Kural kaynağını göster
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; gerekli

Bu hedef için benzersiz bir ad.

default_ios_sdk_version

Dize; yapılandırılmamış; 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ılmamış; 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ılmamış; 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ılmamış; 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ılmamış; 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; nonstructured; gerekli

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