Objective-C Kuralları

Sorun bildir Kaynağı görüntüle Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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, derlenmiş statik bir kitaplığı .a dosyası şeklinde kapsar. Ayrıca, objc_library tarafından desteklenen özellikler kullanılarak 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; zorunlu

Bu hedef için benzersiz bir ad.

deps

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

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

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

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

Bu başlıklar, kitaplığın herkese açık arayüzünü açıklar ve bu kuraldaki veya bağımlı kurallardaki kaynaklar tarafından dahil edilmek üzere kullanılabilir hale getirilir. Bu kitaplığın bir istemcisi tarafından dahil edilmesi amaçlanmayan üstbilgiler bunun yerine srcs özelliğinde listelenmelidir.

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

Boole değeri; varsayılan değer False'dır.

1 ise bu kitaplığa (doğrudan veya dolaylı olarak) bağlı olan tüm paketler ya da ikili programlar, srcs ve non_arc_srcs içinde listelenen dosyaların tüm nesne dosyalarına bağlanır. Bazıları, ikili program tarafından referans verilen semboller içermese bile bu durum geçerlidir. Bu, kodunuz ikilideki kod tarafından açıkça çağrılmıyorsa (ör. kodunuz, bir hizmet tarafından sağlanan geri çağırmayı almak için kaydediliyorsa) kullanışlıdır.
archives

Etiket listesi; zorunlu

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

Dizelerin listesi; varsayılan değer []'dır.

Bu hedefe ve tüm bağlı hedeflere eklenecek #include/#import arama yollarının listesi. Bu, #import/#include ifadelerinde çalışma alanının 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ünün yanı sıra genfiles ve bin kökleri (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir) de dahil edilir.

COPTS'tan farklı olarak, bu işaretler bu kural ve buna bağlı olan her kural için eklenir. (Not: bağlı olduğu kurallar değil!) Bu durumun geniş kapsamlı etkileri olabileceğinden çok dikkatli olun. Şüpheye düştüğünüz durumlarda bunun yerine COPTS'a "-iquote" işaretleri ekleyin.

sdk_dylibs

Dizelerin listesi; varsayılan değer []'dır.

Bağlanacak 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 dosya bağlanırken bu ikili dosyanın geçişli bağımlılık grafiğinde adı geçen tüm kitaplıklar kullanılır.
sdk_frameworks

Dizelerin listesi; varsayılan değer []'dır.

Bağlanılacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore").

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

sdk_includes

Dizelerin listesi; varsayılan değer []'dır.

Bu hedefe ve tüm bağlı hedeflere eklenecek #include/#import arama yollarının listesi. Her yol, $(SDKROOT)/usr/include ile ilgilidir.
textual_hdrs

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

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

Dizelerin listesi; varsayılan değer []'dır.

Zayıf bağlantı oluşturulacak SDK çerçevelerinin adları. Örneğin, "MediaAccessibility". Normalde bağlantılı SDK çerçevelerinden farklı olarak, zayıf bağlantılı çerçevelerdeki semboller, çalışma zamanında mevcut olmadıklarında hataya neden olmaz.

objc_library

Kural kaynağını görüntüleme
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, conlyopts, copts, cxxopts, 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 []'dir.

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

Etiket 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, check-in yaptığınız dosyalar ve oluşturulan tüm dosyalardır. Kaynak dosyalar, Clang ile .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 hdrs'deki başlıklar veya bu kurala bağlı olan hedefler tarafından dahil edilemez/içe aktarılamaz. Ayrıca, önceden derlenmiş .o dosyaları da kaynak olarak verilebilir. Sembol bağlayıcı hatalarını önlemek için sağlanan .o dosyalarının ve derlemenin mimarisinde tutarlılık olduğundan emin olun.
hdrs

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

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

Bu başlıklar, kitaplığın herkese açık arayüzünü açıklar ve bu kuraldaki veya bağımlı kurallardaki kaynaklar tarafından dahil edilmek üzere kullanılabilir hale getirilir. Bu kitaplığın bir istemcisi tarafından dahil edilmesi amaçlanmayan üstbilgiler bunun yerine srcs özelliğinde listelenmelidir.

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

Boole değeri; varsayılan değer False'dır.

1 ise bu kitaplığa (doğrudan veya dolaylı olarak) bağlı olan tüm paketler ya da ikili programlar, srcs ve non_arc_srcs içinde listelenen dosyaların tüm nesne dosyalarına bağlanır. Bazıları, ikili program tarafından referans verilen semboller içermese bile bu durum geçerlidir. Bu, kodunuz ikilideki kod tarafından açıkça çağrılmıyorsa (ör. kodunuz, bir hizmet tarafından sağlanan geri çağırmayı almak için kaydediliyorsa) kullanışlıdır.
conlyopts

Dizelerin listesi; varsayılan değer []'dır.

C dosyaları için derleyiciye iletilecek ek işaretler. "Değişken oluştur" yerine koyma ve Bourne kabuğu belirteçleştirme işlemine tabidir. Bu işaretler yalnızca bu hedef için geçerli olur. Hedefin bağlı olduğu veya hedefe bağlı olan diğer hedefler için geçerli olmaz.

Oluşturulan Xcode projesinde, copts'taki "-I" işaretleri kullanılarak belirtilen dizin yollarının ayrıştırıldığını, göreli yollarsa "$(WORKSPACE_ROOT)/" ile öneklenip ilişkili Xcode hedefinin başlık arama yollarına eklendiğini unutmayın.

copts

Dizelerin listesi; varsayılan değer []'dır.

Derleyiciye iletilecek ek işaretler. "Değişken oluştur" yerine koyma ve Bourne kabuğu belirteçleştirme işlemine tabidir. Bu işaretler yalnızca bu hedef için geçerli olur. Hedefin bağlı olduğu veya hedefe bağlı olan diğer hedefler için geçerli olmaz.

Oluşturulan Xcode projesinde, copts'taki "-I" işaretleri kullanılarak belirtilen dizin yollarının ayrıştırıldığını, göreli yollarsa "$(WORKSPACE_ROOT)/" ile öneklenip ilişkili Xcode hedefinin başlık arama yollarına eklendiğini unutmayın.

cxxopts

Dizelerin listesi; varsayılan değer []'dır.

Objective-C++ ve C++ dosyaları için derleyiciye iletilecek ek işaretler. "Değişken oluştur" yerine koyma ve Bourne kabuğu belirteçleştirme işlemine tabidir. Bu işaretler yalnızca bu hedef için geçerli olur. Hedefin bağlı olduğu veya hedefe bağlı olan diğer hedefler için geçerli olmaz.

Oluşturulan Xcode projesinde, copts'taki "-I" işaretleri kullanılarak belirtilen dizin yollarının ayrıştırıldığını, göreli yollarsa "$(WORKSPACE_ROOT)/" ile öneklenip ilişkili Xcode hedefinin başlık arama yollarına eklendiğini unutmayın.

defines

Dizelerin listesi; varsayılan değer []'dır.

Derleyiciye iletilecek ek -D işaretleri. KEY=VALUE biçiminde veya yalnızca KEY biçiminde olmalıdır ve yalnızca bu hedefin derleyicisine (copts olarak) değil, aynı zamanda bu hedefin tüm objc_ bağımlılarına da iletilir. "Değişken oluştur" yerine koyma ve Bourne kabuğu belirteçleştirme işlemine tabidir.
enable_modules

Boole değeri; varsayılan değer False'dır.

Clang modülü desteğini etkinleştirir (-fmodules aracılığıyla). Bu değeri 1 olarak ayarladığınızda sistem başlıklarını ve diğer hedefleri @import ile içe aktarabilirsiniz: @import UIKit; @import path_to_package_target;
implementation_deps

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

Kitaplık hedefinin bağlı olduğu diğer kitaplıkların listesi. deps'dan farklı olarak, bu kitaplıkların (ve tüm geçişli bağımlılıklarının) başlıkları ve dahil etme yolları yalnızca bu kitaplığın derlenmesi için kullanılır ve kendisine bağlı olan kitaplıklar için kullanılmaz. implementation_deps ile belirtilen kitaplıklar, bu kitaplığa bağlı ikili hedeflerde hâlâ bağlantılıdır.
includes

Dizelerin listesi; varsayılan değer []'dır.

Bu hedefe ve tüm bağlı hedeflere eklenecek #include/#import arama yollarının listesi. Bu, #import/#include ifadelerinde çalışma alanının 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ünün yanı sıra genfiles ve bin kökleri (ör. blaze-genfiles/pkg/includedir ve blaze-out/pkg/includedir) de dahil edilir.

COPTS'tan farklı olarak, bu işaretler bu kural ve buna bağlı olan her kural için eklenir. (Not: bağlı olduğu kurallar değil!) Bu durumun geniş kapsamlı etkileri olabileceğinden çok dikkatli olun. Şüpheye düştüğünüz durumlarda bunun yerine COPTS'a "-iquote" işaretleri ekleyin.

linkopts

Dizelerin listesi; varsayılan değer []'dır.

Bağlayıcıya geçirilecek ek işaretler.
module_map

Etiket; varsayılan değer None'dir.

Bu hedef için özel Clang modül eşlemesi. Özel modül haritası kullanılması önerilmez. Kullanıcıların çoğu, 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ı 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

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

ARC'yi KULLANMAYAN kitaplık hedefi 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'dir.

Derlenen her kaynak dosyanın (hem arc hem de arc olmayan) başına eklenecek üstbilgi dosyası. BUILD dosyalarında pch dosyalarının kullanılması kesinlikle önerilmez ve bu işlevin kullanımdan kaldırıldığı kabul edilmelidir. pch dosyaları aslında önceden derlenmediğinden bu, derleme hızını artırmaz. Bunun yerine, yalnızca genel bir bağımlılıktır. Derleme verimliliği açısından, ihtiyacınız olanı doğrudan kaynaklarınıza eklemeniz daha iyi olur.
sdk_dylibs

Dizelerin listesi; varsayılan değer []'dır.

Bağlanacak 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 dosya bağlanırken bu ikili dosyanın geçişli bağımlılık grafiğinde adı geçen tüm kitaplıklar kullanılır.
sdk_frameworks

Dizelerin listesi; varsayılan değer []'dır.

Bağlanılacak SDK çerçevelerinin adları (ör. "AddressBook", "QuartzCore").

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

sdk_includes

Dizelerin listesi; varsayılan değer []'dır.

Bu hedefe ve tüm bağlı hedeflere eklenecek #include/#import arama yollarının listesi. Her yol, $(SDKROOT)/usr/include ile ilgilidir.
stamp

Boole değeri; varsayılan değer False'dır.

textual_hdrs

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

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

Dizelerin listesi; varsayılan değer []'dır.

Zayıf bağlantı oluşturulacak SDK çerçevelerinin adları. Örneğin, "MediaAccessibility". Normalde bağlantılı SDK çerçevelerinden farklı olarak, zayıf bağlantılı çerçevelerdeki semboller, çalışma zamanında mevcut olmadıklarında hataya neden olmaz.