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

objc_import

Kural kaynağını görüntüleme
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ş 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++ üstbilgi 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 istemcisi 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ğımlı olan tüm paketler ya da ikili dosyalar, srcs ve non_arc_srcs'te listelenen dosyaların tüm nesne dosyalarını bağlar (bazılarında ikili dosya 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 beyanlarında ç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 genfiles 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 ona 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 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++ kaynakları varsa "libc++" otomatik olarak dahil edilir. Bir ikili bağlanırken, söz konusu ikili dosyanın geçişli bağımlılık grafiğinde belirtilen 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").

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

Zayıf bağlantı kurulacak SDK çerçevelerinin adları. Örneğin, "MediaAccessibility". Normal şekilde bağlanmış SDK çerçevelerinin aksine, zayıf bağlı çerçevelerdeki semboller ç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, 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

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

Bu hedefin bağlı olduğu 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. Üstbilgi dosyaları, bu hedefin srcs özelliğindeki herhangi bir kaynak veya üstbilgi tarafından dahil edilebilir/ithal edilebilir ancak hdrs veya bu kurala bağlı herhangi bir hedef 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ğlamaya dikkat edin.
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++ üstbilgi 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 istemcisi 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ğımlı olan tüm paketler ya da ikili dosyalar, srcs ve non_arc_srcs'te listelenen dosyaların tüm nesne dosyalarını bağlar (bazılarında ikili dosya 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 ve Bourne kabuğu dize parçalarına ayırma işlemine tabidir. Bu işaretler yalnızca bu hedef için geçerli olur ve bu hedefin bağlı olduğu hedefler veya bu hedeften etkilenen 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 önceden 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 yalnızca 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 ve Bourne kabuğu dize parçalarına ayırma işlemine tabidir.
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 beyanlarında ç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 genfiles 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 ona 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 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.

özel 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 ele alınır 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++ kaynakları varsa "libc++" otomatik olarak dahil edilir. Bir ikili bağlanırken, söz konusu ikili dosyanın geçişli bağımlılık grafiğinde belirtilen 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").

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

Boole; varsayılan değer False'tir

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

Zayıf bağlantı kurulacak SDK çerçevelerinin adları. Örneğin, "MediaAccessibility". Normal şekilde bağlanmış SDK çerçevelerinin aksine, zayıf bağlı çerçevelerdeki semboller çalışma zamanında mevcut değilse hata oluşturmaz.