Objective-C Kuralları

Sorun bildirin Kaynağı göster

Kurallar

j2objc_kitaplığı

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 kullanır. Bu komut daha sonra objc_library ve objc_binary kurallarının bağımlıları olarak kullanılabilir. J2ObjC ile ilgili ayrıntılı bilgiye J2ObjC sitesinden ulaşabilirsiniz.

Özel J2ObjC çeviri işaretleri, komut satırındaki derleme işareti --j2objc_translation_flags kullanılarak belirtilebilir.

Bir j2objc_library hedefinde yer alan çevrilen 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 belirtilmemiş bir objc_library kuralının kaynaklarıyla aynıdır.

Ayrıca, oluşturulan kodun 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 bir sembol sembolü kopyası 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

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

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 ek açıklaması işleme ile oluşturulan dosyalar da dahil olmak üzere exports, deps ve runtime_deps aracılığıyla geçişli olarak erişilebilen tüm java_library ve java_import hedefleri çevrilip derlenir. srcjar belirtilmeden 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 içindeki srcs içinde yer alan her .java kaynak dosyası için bir .h ve .m kaynak dosyası oluşturulur. srcs/java_library veya java_import/srcjar içindeki her kaynak kavanozuna karşılık gelen bir .h ve .m kaynak dosyası, söz konusu kavanozun tüm koduyla oluşturulur.

Kullanıcılar, kodlarında J2ObjC tarafından oluşturulan başlık dosyalarını içe aktarabilir. Bu dosyaların içe aktarma yolları, orijinal Java yapılarının kök göreli yollarıdır. Örneğin, //some/package/foo.java içe aktarma yolunun some/package/foo.h, //some/package/bar.srcjar yönteminin ise some/package/bar.h olduğunu belirtir

Proto_library kuralları, bu kuralın geçici olarak kapanmasındaysa J2ObjC protoları da oluşturulur, derlenir ve ikili düzeyde bağlanır. Kullanıcılar, //some/proto/foo.proto protokolü için, içe aktarma yolunu (some/proto/foo.j2objc.pb.h) kullanarak oluşturulan koda başvurabilir.

entry_classes

List of strings; optional

Çevrilmiş ObjC benzerlerine, kullanıcının ObjC kodundan doğrudan referans verilecek Java sınıflarının listesi. --j2objc_dead_code_removal işareti etkinse bu özellik gereklidir. Java sınıfları, Java Dil Spesifikasyonu tarafından tanımlandığı şekilde standart adlarında 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. Bu durumda, kullanılmayan sınıflar nihai ObjC uygulama paketinden kaldırılır.
jre_deps

List of labels; optional

Bu j2objc_library kuralı tarafından çevrilen tüm Java kodlarının gerektirdiği ek JRE emülasyon kitaplıklarının listesi. Yalnızca temel JRE işlevleri bağlanır.

objc_içe aktarma

Kural kaynağını göster
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 zaten derlenmiş bir statik kitaplık içerir. Ayrıca, objc_library tarafından desteklenenlerle aynı özellikleri kullanarak başlıkların ve kaynakların dışa aktarılmasını sağlar.

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 listesi, bağımlı kurallardaki kaynaklar tarafından dahil edilir.

Bu üstbilgiler, kitaplığın herkese açık arayüzünü açıklar ve kaynakların bu kurala veya bağımlı kurallara dahil edilmesi için kullanıma sunulur. Bu kitaplıktaki istemciler tarafından eklenmesi amaçlanmayan başlıklar bunun yerine srcs özelliğinde listelenmelidir.

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

Boolean; optional; default is False

1 ise bu kitaplıka bağımlı olan (doğrudan veya dolaylı olarak) paket ya da ikili program, srcs ve non_arc_srcs içinde listelenen dosyalar için tüm nesne dosyalarına bağlantı kurar (bazıları ikili program tarafından referans verilen hiçbir simge içermese bile). Bu, kodunuz ikili biçimdeki kodla açıkça çağrılmadığında (ör. bir hizmet tarafından sağlanan bazı geri çağırmaları almak için kaydolduğunda) yararlıdır.
archives

List of labels; required

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

List of strings; optional

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

Yollar, paket dizinine göre yorumlanır ve genfiles ile bin kökler (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir), gerçek istemci köküne ek olarak dahil edilir.

COPTS'in aksine bu işaretler bu kurala ve ona bağlı her kural için eklenir. (Not: Duruma bağlı olan kurallar yoktur.) Bunun çok kapsamlı etkileri olabileceği için çok dikkatli olun. Şüpheye düşerseniz -COPTS öğesine "-iquote" işaretlerini ekleyin.

sdk_dylibs

List of strings; optional

Bağlanacak SDK .dylib kitaplığının adları. Örneğin, "libz" veya "libarchive". İkili programın bağımlı ağacında C++ veya Objective-C++ kaynakları varsa "libc++" otomatik olarak dahil edilir. İkili bağlantı oluştururken bu ikili programın geçişli bağımlılık grafiğinde adı verilen 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 derleme yaparken "UIKit" ve " Foundation" her zaman dahil edilir. macOS için her zaman yalnızca "Temel" dahil edilir.

Üst düzey bir Apple ikili programını bağlarken 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 ve her biri bağlı hedeflere eklenen #include/#import arama yolunun listesi. Burada her yol $(SDKROOT)/usr/include değerine göre belirlenir.
textual_hdrs

List of labels; optional

Bu kuraldaki kaynak dosyalar veya bu kitaplığın kullanıcıları tarafından üstbilgi olarak eklenen C, C++, Objective-C ve Objective-C++ dosyalarının listesi. HDR'lerin aksine bu kaynaklar 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ğlı SDK çerçevelerinden farklı olarak, zayıf bağlantılı çerçevelerden gelen simgeler, çalışma zamanında mevcut değilse hataya neden olmaz.

objc_kitaplık

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

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

Nihai paketi oluşturmak üzere birbirine bağlanmış hedeflerin listesi.
srcs

List of labels; optional

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` ya da `.asm`) derleme derleme dosyalarının listesi. Bunlar, check-in yaptığınız dosyalar ve oluşturulan dosyalardır. Kaynak dosyalar, Clang kullanılarak .o dosyaları halinde derlenir. Başlık dosyaları bu hedefin srcs özelliğindeki herhangi bir kaynak veya başlık tarafından dahil edilebilir/içe aktarılabilir, ancak hdr'lardaki üstbilgiler veya bu kurala bağlı olan hedefler tarafından dahil edilemez. Ayrıca, önceden derlenmiş .o dosyaları src olarak sunulabilir. Eksik bağlayıcı bağlayıcı hatalarını önlemek için, sağlanan .o dosyalarının ve derlemenin mimarisinde tutarlılık sağlamaya özen gösterin.
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 listesi, bağımlı kurallardaki kaynaklar tarafından dahil edilir.

Bu üstbilgiler, kitaplığın herkese açık arayüzünü açıklar ve kaynakların bu kurala veya bağımlı kurallara dahil edilmesi için kullanıma sunulur. Bu kitaplıktaki istemciler tarafından eklenmesi amaçlanmayan başlıklar bunun yerine srcs özelliğinde listelenmelidir.

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

Boolean; optional; default is False

1 ise bu kitaplıka bağımlı olan (doğrudan veya dolaylı olarak) paket ya da ikili program, srcs ve non_arc_srcs içinde listelenen dosyalar için tüm nesne dosyalarına bağlantı kurar (bazıları ikili program tarafından referans verilen hiçbir simge içermese bile). Bu, kodunuz ikili biçimdeki kodla açıkça çağrılmadığında (ör. bir hizmet tarafından sağlanan bazı geri çağırmaları almak için kaydolduğunda) yararlıdır.
copts

List of strings; optional

Derleyiciye iletilecek ekstra işaretler. "Değişken oluşturun" yerine ve Bourne kabuk jetonlarının değiştirilmesine tabidir. Bu işaretler yalnızca bu hedef için geçerli olup bunlara bağlı olan bayraklar için geçerli değildir.

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 olması durumunda başına "$(WORKSPACE_ROOT)/" ifadesinin eklenmesini ve ilgili Xcode hedefinin başlık arama yollarına eklenmesini unutmayın.

defines

List of strings; optional

Derleyiciye iletilecek ekstra -D işareti. Bunlar KEY=VALUE veya yalnızca KEY biçiminde olmalı ve yalnızca bu hedefin derleyicisine (copts olduğu gibi) değil, aynı zamanda bu hedefin tüm objc_ bağımlısına da iletilmelidir. "Değişken oluşturun" yerine ve Bourne kabuk jetonlarının değiştirilmesine tabidir.
enable_modules

Boolean; optional; default is False

Clang modülü desteğini etkinleştirir (-fmodules ile). Bunu 1 olarak ayarlarsanız @import sistem başlıklarını ve diğer hedefleri içe aktarabilirsiniz: @import UIKit; @import path_to_package_target;
includes

List of strings; optional

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

Yollar, paket dizinine göre yorumlanır ve genfiles ile bin kökler (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir), gerçek istemci köküne ek olarak dahil edilir.

COPTS'in aksine bu işaretler bu kurala ve ona bağlı her kural için eklenir. (Not: Duruma bağlı olan kurallar yoktur.) Bunun çok kapsamlı etkileri olabileceği için çok dikkatli olun. Şüpheye düşerseniz -COPTS öğesine "-iquote" işaretlerini ekleyin.

linkopts

List of strings; optional

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

Label; optional

Bu hedef için özel bir Clang modülü haritası. Özel modül haritaları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 eşlemesi oluşturmaz, ancak sağlanan modül eşlemeyi derleyiciye iletir.
module_name

String; optional

Bu hedef için modül adını belirler. Modül adı varsayılan olarak, tüm özel simgeler _ ile değiştirilecek. Örneğin, //foo/baz:bar foo_baz_bar olarak içe aktarılabilir.
non_arc_srcs

List of labels; optional

ARC KULLANMAYAN kitaplık hedefini oluşturmak için işlenen Objective-C dosyalarının listesi. Bu özellikteki dosyalar, src özelliğinde bulunan dosyalara çok benzerdir ancak ARC etkinleştirilmeden derlenir.
pch

Label; optional

Derlenen her kaynak dosyanın başına eklenecek başlık dosyası (hem arc hem de arc olmayan dosyalar). pCH dosyalarının DERLEME dosyalarında etkin olarak kullanılması önerilmez ve bu yöntem, kullanımdan kaldırılmış olarak kabul edilmelidir. pch dosyaları aslında önceden derlenmediğinden, bu bir derleme hızı geliştirmesi değildir, yalnızca küresel bir bağımlılıktır. Derleme verimlilik açısından bakıldığında, ihtiyacınız olan şeyleri doğrudan kaynaklarınızda kaynaklarınıza dahil etmek daha iyidir.
sdk_dylibs

List of strings; optional

Bağlanacak SDK .dylib kitaplığının adları. Örneğin, "libz" veya "libarchive". İkili programın bağımlı ağacında C++ veya Objective-C++ kaynakları varsa "libc++" otomatik olarak dahil edilir. İkili bağlantı oluştururken bu ikili programın geçişli bağımlılık grafiğinde adı verilen 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 derleme yaparken "UIKit" ve " Foundation" her zaman dahil edilir. macOS için her zaman yalnızca "Temel" dahil edilir.

Üst düzey bir Apple ikili programını bağlarken 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 ve her biri bağlı hedeflere eklenen #include/#import arama yolunun listesi. Burada her yol $(SDKROOT)/usr/include değerine göre belirlenir.
textual_hdrs

List of labels; optional

Bu kuraldaki kaynak dosyalar veya bu kitaplığın kullanıcıları tarafından üstbilgi olarak eklenen C, C++, Objective-C ve Objective-C++ dosyalarının listesi. HDR'lerin aksine bu kaynaklar 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ğlı SDK çerçevelerinden farklı olarak, zayıf bağlantılı çerçevelerden gelen simgeler, çalışma zamanında mevcut değilse hataya neden olmaz.

kullanılabilir_xkodlar

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

Uzak ve yerel olarak kullanılabilen xcode sürümlerini belirtmek için bu kuralın iki hedefi bir xcode_config kural örneğine bağlı olabilir. Bu, toplu olarak kullanılabilen xcode'lardan resmi 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_yapılandırma

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 bu kuralın tek bir hedefine --xcode_version_config derleme işareti tarafından referansta bulunulabilir. Bu, çeşitli kayıtlı takma adlardan 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

xcode'un kullanılacak 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. versions ayarlanmışsa bu gereklidir. remote_versions veya local_versions ayarlanmışsa bu ayar yapılamaz.
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_sürümü

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

Bu xcode sürümü için kabul edilebilir takma adlara sahip tek bir resmi xcode sürümünü temsil eder. xcode_config kuralını inceleyin.

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

String; optional; nonconfigurable

Bu xcode 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

String; optional; nonconfigurable

Bu xcode sürümü kullanıldığında 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ıldığında 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ı.