Uzantılara Genel Bakış

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

Bu sayfada, makro kullanarak BUILD dilinin nasıl genişletileceği açıklanmaktadır emin olmanız gerekir.

Bazel uzantıları .bzl ile biten dosyalardır. Tekliflerinizi otomatikleştirmek ve optimize etmek için load ifadesi kullanarak bir uzantıdan simge içe aktarın.

Daha ileri düzey kavramları öğrenmeden önce şunları yapın:

Makrolar ve kurallar

Makro, kuralları örneklendiren bir işlevdir. Bir kullanıcının BUILD dosya, yeniden kullanmanıza olanak tanıdığı için çok fazla tekrarlanıyor veya karmaşık hale geliyor kullanabilirsiniz. BUILD dosyası okunur okunmaz işlev değerlendirilir. Şu tarihten sonra: BUILD dosyasının değerlendirilmesinden sonra Bazel'in makrolar hakkında çok az bilgisi vardır: makronuz bir genrule oluşturuyorsa Bazel, genrule. Bu nedenle, bazel query yalnızca oluşturulan genrule öğesini listeler.

Kural makrodan daha güçlüdür. Bazel'a erişebilir ve neler olup bittiğini tam olarak kontrol ederler. Bu, örneğin nasıl aktaracağınızı öğreneceksiniz.

Basit mantığı yeniden kullanmak isterseniz bir makroyla başlayın. Bir makro bunu bir kural haline getirmek genellikle iyi bir fikirdir. Yeni dil desteği genellikle bir kuralla yapılır. Kurallar ileri düzey kullanıcılar içindir ve çoğu kullanıcıların bir e-posta yazmak zorunda kalmayacağını var olan telefon numarasını arayarak kurallar.

Değerlendirme modeli

Yapı üç aşamadan oluşur.

  • Yükleme aşaması. İlk olarak, tüm uzantıları ve tüm BUILD uzantılarını yükleyip değerlendirin ve derleme dosyasıdır. BUILD dosyalarının yürütülmesi kuralları örneklendirir (bir kural her çağrıldığında bir grafiğe eklenir). Makrolar burada değerlendirilir.

  • Analiz aşaması. Kuralların kodu yürütülür (implementation işlevi) ve işlemler örneklendirilir. Bir eylemde, projenin başarısı için "hello.c'de gcc'yi çalıştır ve al merhaba.o" şeklinde bir ifade içerir. Oluşturma işleminden önce hangi dosyaların oluşturulacağını gerçek komutların çalıştırılmasına neden olur. Başka bir deyişle analiz aşaması yükleme aşamasında oluşturulan grafik ile bir eylem grafiği oluşturulur.

  • Yürütme aşaması. Çıkışlarından en az biri şu olduğunda işlemler yürütülür gereklidir. Bir dosya eksikse veya bir komutun çıkış oluşturamaması durumunda başarısız olur. Bu aşamada testler de yürütülür.

Bazel, .bzl dosyalarını ve BUILD dosyalarını okumak, ayrıştırmak ve değerlendirmek için paralellik kullanıyor. dosyası olarak da kaydedebilir. Bir dosya derleme başına en fazla bir kez okunur ve değerlendirmenin sonucu önbelleğe alınmış ve yeniden kullanılmış olabilir. Bir dosya tüm bağımlılıkları yalnızca bir kez değerlendirilir (load() çözüldüğünden emin olun. Tasarım gereği, .bzl dosyası yüklendiğinde görünür yalnızca değerleri ve işlevleri tanımlar.

Bazel zekice davranmaya çalışıyor: Bağımlılık analizini kullanarak hangi dosyaların yüklenmesi, hangi kuralların analiz edilmesi gerektiği ve hangi işlemlerin yürütülmesi gerektiği. Örneğin, Örneğin, bir kural geçerli derleme için ihtiyacınız olmayan işlemler oluşturursa bu belgeler yürütülmeyecek.

Uzantı oluşturma

Kendi uzantılarınızı yazarken aşağıdaki iki bağlantı çok yararlı olacaktır. Sakla şu özelliklere sahip olmalıdır:

Daha ileri gidiyoruz

Makrolara ve kurallara ek olarak en önemli noktaları ve depo kurallarını içerir.