Objective-C Kuralları

Kurallar

j2objc_library

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 yöntemini kullanır. Daha sonra bu dosya, objc_library ve objc_binary kurallarının bağımlıları olarak kullanılabilir. J2ObjC'nin kendisi hakkında ayrıntılı bilgiyi J2ObjC sitesinde bulabilirsiniz.

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

j2objc_library hedefinde yer alan çevrilmiş dosyaların, varsayılan derleme yapılandırması kullanılarak derleneceğini lütfen unutmayın. Bu yapılandırma, özniteliklerde belirtilen derleme seçeneği belirtilmemiş 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üzeyinde tekilleştirilir. Aynı Java kaynak dosyalarını içeren iki farklı Java hedefiniz varsa bağlantı anında yinelenen bir simge hatası görebilirsiniz. Bu sorunu çözmenin doğru yolu, paylaşılan Java kaynak dosyalarını güvenilebilecek ayrı bir ortak hedefe taşımaktır.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

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

exports, deps ve runtime_deps aracılığıyla geçişli olarak ulaşılabilen tüm java_library ve java_import hedefleri çevrilecek ve derlenecektir. Şu anda Java ek açıklama işleme tarafından oluşturulan dosyalar veya srcjar belirtilmeden java_import hedefleri desteklenmemektedir.

J2ObjC çevirisi, geçişli kapatmada yer alan kaynak Java kaynak dosyalarının türüne bağlı olarak farklı şekilde çalışır. java_library içeriğinin srcs bölümünde yer alan her bir .java kaynak dosyası için karşılık gelen bir .h ve .m kaynak dosyası oluşturulur. java_library arasından srcs veya java_import arasından srcjar kapsamındaki her bir kaynak jar için, söz konusu jar dosyasını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öreli yoludur. Örneğin, //some/package/foo.java içe aktarma yolu some/package/foo.h iken //some/package/bar.srcjar, some/package/bar.h değerine sahiptir

proto_library kuralları, bu kuralın geçişli olarak kapatılma sürecindeyse J2ObjC proto'ları da oluşturulur, derlenir ve ikili düzeyde bağlanır. //some/proto/foo.proto protosu için kullanıcılar, some/proto/foo.j2objc.pb.h içe aktarma yolunu kullanarak oluşturulan koda başvurabilir.

entry_classes

List of strings; optional

Çevrilmiş ObjC eşdeğerlerine doğrudan kullanıcı 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 Belirtimi tarafından tanımlanan 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 ölü kod analizi yapmak için giriş noktaları olarak kullanılır. Kullanılmayan sınıflar, son ObjC uygulama paketinden kaldırılır.
jre_deps

List of labels; optional

Bu j2objc_library kuralıyla çevrilmiş tüm Java kodlarının gerektirdiği ek JRE emülasyon kitaplıklarının listesi. Yalnızca temel JRE işlevleri varsayılan olarak bağlantılıdır.

objc_import

objc_import(name, 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, .a dosyası biçiminde önceden derlenmiş statik bir kitaplığı içerir. Ayrıca, objc_library tarafından desteklenen aynı özellikleri kullanarak başlıkları ve kaynakları dışa aktarmaya da olanak tanır.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

hdrs

List of labels; optional

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

Bu üst bilgiler, kitaplığın herkese açık arayüzünü açıklar ve bu kuraldaki veya bağımlı kurallardaki kaynaklar tarafından eklenmek üzere kullanıma sunulur. Bu kitaplığın bir istemcisi tarafından eklenmemesi amaçlanan başlıklar, srcs özelliğinde listelenmelidir.

Modüller etkinse bunlar kaynaktan ayrı olarak derlenir.

Boolean; optional; default is False

1 ise, bu kitaplığa bağlı olan herhangi bir paket veya ikili program, (bazıları ikili program tarafından başvurulan herhangi bir simge içermese bile) srcs ve non_arc_srcs içinde listelenen dosyaların tüm nesne dosyalarına bağlantı oluşturur. Bu yöntem, kodunuz ikili programdaki kod tarafından açıkça çağrılmıyorsa (ör. kodunuz bir hizmet tarafından sağlanan geri çağırmayı almak için kaydolursa) faydalıdır.
archives

List of labels; required

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

List of strings; optional

Bu hedefe eklenecek #include/#import arama yollarının ve tüm bağlı hedeflere ekleneceklerin listesi. Bu, #import/#include ifadelerinde Workspace yolunun 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üne ek olarak genfiles ve bin root'lar (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir) eklenir.

COPTS'dan farklı olarak bu işaretler, bu kural ve buna bağlı her kural için eklenir. (Not: Bağlı olduğu kurallar değildir.) Bu durum geniş kapsamlı etkilere sahip olabileceğinden çok dikkatli olun. Şüpheye düştüğünüzde, bunun yerine COPTS öğesine "-iquote" işaretlerini ekleyin.

sdk_dylibs

List of strings; optional

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

List of strings; optional

Bağlanacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore"). iOS, tvOS ve watchOS platformları için geliştirme yaparken "UIKit" ve "Foundation" her zaman dahil edilir. macOS'te her zaman yalnızca "Temel" ifadesi yer alır.

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

sdk_includes

List of strings; optional

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

List of labels; optional

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

List of strings; optional

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

objc_library

objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, includes, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, runtime_deps, 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

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

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

List of labels; optional

Kitaplık hedefini 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" 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. Üst bilgi dosyaları, bu hedefin srcs özelliğine herhangi bir kaynak veya başlık tarafından dahil edilebilir/içe aktarılabilir ancak hdr'lerdeki başlıklar veya bu kurala bağlı herhangi bir hedef tarafından eklenemez. Ayrıca, önceden derlenmiş .o dosyaları src olarak verilebilir. Sembol bağlayıcı hatalarının eksik olmaması için, sağlanan .o dosyalarının ve derlemenin mimarisinde tutarlılık sağlamaya dikkat edin.
hdrs

List of labels; optional

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

Bu üst bilgiler, kitaplığın herkese açık arayüzünü açıklar ve bu kuraldaki veya bağımlı kurallardaki kaynaklar tarafından eklenmek üzere kullanıma sunulur. Bu kitaplığın bir istemcisi tarafından eklenmemesi amaçlanan başlıklar, srcs özelliğinde listelenmelidir.

Modüller etkinse bunlar kaynaktan ayrı olarak derlenir.

Boolean; optional; default is False

1 ise, bu kitaplığa bağlı olan herhangi bir paket veya ikili program, (bazıları ikili program tarafından başvurulan herhangi bir simge içermese bile) srcs ve non_arc_srcs içinde listelenen dosyaların tüm nesne dosyalarına bağlantı oluşturur. Bu yöntem, kodunuz ikili programdaki kod tarafından açıkça çağrılmıyorsa (ör. kodunuz bir hizmet tarafından sağlanan geri çağırmayı almak için kaydolursa) faydalıdır.
copts

List of strings; optional

Derleyiciye iletilecek ekstra işaretler. "Değişken oluşturma" değişikliğine ve Bourne kabuğu belirtkelemeye tabidir. Bu işaretler yalnızca bu hedef için geçerli olur ve bağlı olduğu veya bağlı olan hedefler için geçerli değildir.

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

defines

List of strings; optional

Derleyiciye iletilecek ekstra -D işaretleri. Bunlar, KEY=VALUE veya basitçe 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 iletilir. "Değişken oluşturma" değişikliğine ve Bourne kabuğu belirtkelemeye tabidir.
enable_modules

Boolean; optional; default is False

clang modülü desteğini etkinleştirir (-fmodules aracılığıyla). Bu değeri 1 olarak ayarlamak, sistem başlıklarını ve diğer hedefleri @içe aktarmanıza olanak tanır: @import UIKit; @import path_to_package_target;
includes

List of strings; optional

Bu hedefe eklenecek #include/#import arama yollarının ve tüm bağlı hedeflere ekleneceklerin listesi. Bu, #import/#include ifadelerinde Workspace yolunun 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üne ek olarak genfiles ve bin root'lar (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir) eklenir.

COPTS'dan farklı olarak bu işaretler, bu kural ve buna bağlı her kural için eklenir. (Not: Bağlı olduğu kurallar değildir.) Bu durum geniş kapsamlı etkilere sahip olabileceğinden çok dikkatli olun. Şüpheye düştüğünüzde, bunun yerine COPTS öğesine "-iquote" işaretlerini ekleyin.

linkopts

List of strings; optional

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

Label; optional

Bu hedef için özel bir Clang modülü haritası. Özel modüllü harita 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 aktarır.
module_name

String; optional

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

List of labels; optional

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

Label; optional

Derlenen her kaynak dosyanın (hem ark hem de ark olmayan) başına eklenecek başlık dosyası. DERLEME dosyalarında pch dosyalarının kullanılması önerilmez ve bu durum, kullanımdan kaldırılmış olarak kabul edilmelidir. pch dosyaları aslında önceden derlenmemiş olduğundan, bu bir derleme hızı geliştirmesi değil, yalnızca küresel bir bağımlılıktır. Derleme verimliliği açısından bakıldığında, ihtiyacınız olan şeyleri doğrudan kaynaklarınıza gerektiği şekilde dahil etmeniz gerçekten daha iyidir.
runtime_deps

List of labels; optional

Çalışma zamanında geç yüklenen çerçeve hedeflerinin listesi. Bunlar, uygulama paketine dahil edilir ancak derleme sırasında bağlantılı değildir.
sdk_dylibs

List of strings; optional

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

List of strings; optional

Bağlanacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore"). iOS, tvOS ve watchOS platformları için geliştirme yaparken "UIKit" ve "Foundation" her zaman dahil edilir. macOS'te her zaman yalnızca "Temel" ifadesi yer alır.

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

sdk_includes

List of strings; optional

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

List of labels; optional

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

List of strings; optional

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

available_xcodes

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 güvenebilir. Bu, toplu olarak kullanılabilir xcode'lardan resmi bir xcode sürümünün seçilmesine olanak tanır.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

default

Label; required; nonconfigurable

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

List of labels; optional; nonconfigurable

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

xcode_config

xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

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

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

default

Label; optional; nonconfigurable

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

Label; optional; nonconfigurable

xcode_version targets that are available locally. These are used along with local_versions to select a mutually available version. This may not be set if versions is set.
remote_versions

Label; optional; nonconfigurable

xcode_version targets that are available remotely. These are used along with remote_versions to select a mutually available version. This may not be set if versions is set.
versions

List of labels; optional; nonconfigurable

Kabul edildi: xcode_version targets that may be used. If the value of the xcode_version build flag matches one of the aliases or version number of any of the given xcode_version targets, the matching target will be used. This may not be set if remote_versions or local_versions is set.

xcode_version

xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_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 adlarla birlikte tek bir resmi xcode sürümünü temsil eder. xcode_config kuralına bakın.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

default_ios_sdk_version

String; optional; nonconfigurable

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

String; optional; nonconfigurable

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

String; optional; nonconfigurable

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_watchos_sdk_version

String; optional; nonconfigurable

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

String; required; nonconfigurable

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