DERLEME dosyaları

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Ö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