Önceki bölümlerde paketler, hedefler ve etiketler ile bağımlılık grafiğini soyut olarak oluşturabilirsiniz. Bu bölümde özet söz dizimi açıklanmaktadır bir paketi tanımlamak için kullanılır.
Tanımı gereği her paket bir BUILD
dosyası içerir. Bu dosya,
çok önemli. BUILD
dosya, zorunlu bir dil kullanılarak değerlendirildi.
Yıldızlar.
İfadelerin sıralı bir listesi olarak yorumlanır.
Genel olarak sıra önemlidir: Değişkenler, çalıştırılmadan önce
belirler. Ancak, çoğu BUILD
dosyası yalnızca şu bildirimlerden oluşur:
ve bu ifadelerin göreceli sırası önemsizdir; tümü
tarafından hangi kuralların ve bu kuralların hangi değerlerle
süre paketi değerlendirmesi
tamamlanır.
cc_library
gibi bir derleme kuralı işlevi yürütüldüğünde
yeni bir hedef belirir. Bu hedef daha sonra bir etiket kullanılarak yönlendirilebilir.
Basit BUILD
dosyalarında, kural bildirimleri gerek kalmadan serbestçe yeniden sıralanabilir.
ve davranışı değiştirmektir.
Kod ve veriler arasında net bir ayrım yapılmasını sağlamak için BUILD
dosyaları
işlev tanımları, for
ifadeleri veya if
ifadeleri içerir (ancak
ifadelerinin anlaşılmasına ve if
ifadelerine izin verilir.) İşlevler şurada tanımlanabilir:
Bunun yerine .bzl
dosyalarını kullanabilirsiniz. Ayrıca, *args
ve **kwargs
bağımsız değişkenleri
BUILD
dosyada izin veriliyor; tüm bağımsız değişkenleri açık bir şekilde listeleyin.
Daha da önemlisi, Starlark'taki programlar rastgele G/Ç gerçekleştiremez. Bu değişken
BUILD
dosyalarının yorumlanmasını hermetik hale getirir (yalnızca bilinen bir
bir dizi girdi içerir. Bu, derlemelerin tekrarlanabilir olmasını sağlamak için elzemdir.
Daha fazla bilgi için Hermeticity bölümünü inceleyin.
BUILD
dosyaları, yalnızca ASCII karakterler kullanılarak yazılmalıdır ancak
teknik olarak Latin-1 karakter kümesi kullanılarak yorumlanır.
BUILD
dosyalarının bağımlılıkları
temel alınan kod değişikliğinden sonra, bunlar genellikle tek bir cihazda birden fazla kişi tarafından
ekibinde çalışıyorum. BUILD
dosya yazarı, rolü belgelemek için serbestçe yorum yapmalıdır.
kamu kullanımına yönelik olsun ya da olmasın, her bir derleme hedefini ve
rolünün belgelenmesine yardımcı olur.
Uzantı yükleniyor
Bazel uzantıları .bzl
ile biten dosyalardır. İçe aktarmak için load
ifadesini kullanın
bir uzantıya ait simgedir.
load("//foo/bar:file.bzl", "some_library")
Bu kod, foo/bar/file.bzl
dosyasını yükler ve some_library
simgesini ekler
ortaya çıkarmasını sağlar. Bu, yeni kurallar, işlevler veya sabit değerler yüklemek için kullanılabilir
(örneğin bir dize veya liste). Birden çok simge,
load
çağrısına yönelik ek bağımsız değişkenler. Bağımsız değişkenler dize değişmez değeri olmalıdır
(değişken yok) ve load
ifadeleri üst düzeyde görünmelidir. Ancak,
eklemesi gerekir.
load
öğesinin ilk bağımsız değişkeni, bir etiketi tanımlayan bir etikettir
.bzl
dosyası. Göreceli bir etiketse,
mevcut bzl
dosyasını içeren paket (dizin değil). Göreli etiketler:
load
ifadelerinin başında :
kullanılmalıdır.
load
ayrıca takma adları da desteklediğinden
içe aktarılan simgeler.
load("//foo/bar:file.bzl", library_alias = "some_library")
Tek bir load
ifadesinde birden çok takma ad tanımlayabilirsiniz. Ayrıca,
bağımsız değişken listesi hem takma adlar hem de normal simge adları içerebilir. Aşağıdakiler
örnek tamamen yasaldır (ne zaman tırnak işareti kullanacağınızı lütfen unutmayın).
load(":my_rules.bzl", "some_rule", nice_alias = "some_other_rule")
.bzl
dosyasında _
ile başlayan simgeler dışa aktarılmaz ve yapılamaz.
başka bir dosyadan yüklendi.
Yükleme görünürlüğünü kısıtlamak için yük görünürlüğünü kullanabilirsiniz.
kim .bzl
dosyası yükleyebilir.
Derleme kuralı türleri
Derleme kurallarının çoğu aileler halinde gelir ve
dili'ne dokunun. Örneğin, cc_binary
, cc_library
cc_test
ise C++ ikili programları için derleme kurallarıdır.
kitaplıklar ve testler vardır. Diğer diller için aynı
farklı bir önekle (ör. java_*
Java. Bu işlevlerin bazıları
Ansiklopedi oluşturun ancak bu mümkün
yeni kurallar oluşturabilmesini
sağlar.
*_binary
kuralları, belirli bir dilde yürütülebilir programlar oluşturur. Ardından derleme dosyası kullanıyorsanız yürütülebilir dosya, derleme aracının ikili dosyasında çıkışını kurala karşılık gelen ada yerleştirin. bu nedenle//my:program
, (örneğin)$(BINDIR)/my/program
konumunda görünür.Bazı dillerde, bu kurallar bir runfiles dizini de oluşturur
data
klasöründe bahsedilen tüm dosyaları içeren kurala ait özellik veya geçişli kuralındaki herhangi bir kural bağımlılıkları kapatma, bir araya getirilerek tek bir yerden üretime dağıtım kolaylığı sağlıyor.*_test
kuralları, bir*_binary
kuralının uzmanlık alanıdır ve otomatik işlemler için kullanılır. teşvik etmek anlamına gelir. Testler, hiç başarı getirmeyen programlardır.İkili programlar gibi testlerde de çalıştırma dosyası ağaçları bulunur ve dosyalar altında, testin meşru olarak açabileceği tek dosyalar bulunur. çalışma zamanında. Örneğin, bir
cc_test(name='x', data=['//foo:bar'])
programı yürütme sırasında açılıp$TEST_SRCDIR/workspace/foo/bar
okuyabilir. (Her programlama dilinin programlama dilinin kendisi,$TEST_SRCDIR
değerine erişiyor, ancak hepsi (doğrudan ortam değişkenini kullanmaya eşdeğer).) Kurala uyulmaması, ana makinede yürütülür.*_library
kuralları, belirtilen programlama dili. Kitaplıklar diğer kütüphanelere, İkili programlar ve testler, beklenen çalışma biçimini destekler.
Etiketler | Bağımlılıklar |