Objective-C Kuralları

. Sorun bildir Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Kurallar

j2objc_library

Kural kaynağını görüntüle
j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, exec_compatible_with, exec_properties, features, jre_deps, restricted_to, tags, target_compatible_with, testonly, toolchains, 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

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

Etiket listesi; varsayılan değer []

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 derlenecektir. Buna, Java ek açıklama işleme sistemi tarafından oluşturulan dosyalar da dahildir. srcjar içermeyen code>java_import hedefleri için destek verilmez 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

Dize listesi; varsayılan değer []

Ç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

Etiket listesi; varsayılan değer []

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

Kural kaynağını görüntüle
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, includes, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, 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

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

Etiket listesi; varsayılan değer []

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

Etiket listesi; varsayılan değer []

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.

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

Etiket listesi; zorunlu

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

Dize listesi; varsayılan değer []

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

Dize listesi; varsayılan değer []

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

Dize listesi; varsayılan değer []

Bağlantı oluşturulacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore").

Ü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

Dize listesi; varsayılan değer []

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

Etiket listesi; varsayılan değer []

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

Dize listesi; varsayılan değer []

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

Kural kaynağını görüntüle
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, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, stamp, 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 değer []

Bu hedefin bağımlı olduğu hedeflerin listesi.
srcs

Etiket listesi; varsayılan değer []

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

Etiket listesi; varsayılan değer []

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.

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

Dize listesi; varsayılan değer []

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

Dize listesi; varsayılan değer []

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

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

Etiket listesi; varsayılan değer []

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

Dize listesi; varsayılan değer []

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

Dize listesi; varsayılan değer []

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

Etiket; varsayılan değer None

özel Clang modülü eşlemesi. Ö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; varsayılan değer ""

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

Etiket listesi; varsayılan değer []

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

Etiket; varsayılan değer None

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

Dize listesi; varsayılan değer []

Bağlantı oluşturulacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore").

Ü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

Dize listesi; varsayılan değer []

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

Boole; varsayılan değer False

textual_hdrs

Etiket listesi; varsayılan değer []

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

Dize listesi; varsayılan değer []

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.