Bazel, Make, Maven ve Gradle'a benzer açık kaynaklı bir derleme ve test aracıdır. Kullanıcıların okuyabileceği, üst düzey bir derleme dili kullanır. Bazel, birden fazla dildeki projeleri destekler ve birden fazla platform için çıkış oluşturur. Bazel, birden fazla depodaki büyük kod tabanlarını ve çok sayıda kullanıcıyı destekler.
Avantajları
Bazel aşağıdaki avantajları sunar:
Üst düzey derleme dili. Bazel, projenizin derleme özelliklerini yüksek bir anlamsal düzeyde açıklamak için soyut ve okunabilir bir dil kullanır. Diğer araçların aksine Bazel, kitaplıklar, ikili dosyalar, komut dosyaları ve veri kümeleri kavramları üzerinde çalışır. Bu sayede, derleyiciler ve bağlayıcılar gibi araçlara tek tek çağrı yazmanın karmaşıklığından kurtulursunuz.
Bazel hızlı ve güvenilirdir. Bazel, daha önce yapılan tüm çalışmaları önbelleğe alır ve hem dosya içeriğindeki hem de derleme komutlarındaki değişiklikleri izler. Bu sayede Bazel, neyin yeniden oluşturulması gerektiğini bilir ve yalnızca onu yeniden oluşturur. Derlemelerinizi daha da hızlandırmak için projenizi yüksek oranda paralel ve artımlı şekilde derlenecek şekilde ayarlayabilirsiniz.
Bazel, çok platformlu bir uygulamadır. Bazel; Linux, macOS ve Windows'da çalışır. Bazel, aynı projeden masaüstü, sunucu ve mobil gibi birden fazla platform için ikili dosyalar ve dağıtılabilir paketler oluşturabilir.
Bazel ölçekleri. Bazel, 100.000'den fazla kaynak dosyası içeren derlemeleri işlerken çevikliği korur. On binlerce kullanıcının bulunduğu birden fazla depoyla çalışır.
Bazel genişletilebilir. Birçok dil desteklenir. Ayrıca Bazel'i diğer dilleri veya çerçeveleri destekleyecek şekilde genişletebilirsiniz.
Bazel'i kullanma
Bazel ile proje oluşturmak veya test etmek için genellikle aşağıdakileri yaparsınız:
Bazel'i kurun. Bazel'i indirip yükleyin.
Bazel'in derleme girişleri ve
BUILD
dosyalarını aradığı, derleme çıkışlarını depoladığı bir dizin olan proje çalışma alanı oluşturun.Bazel'e neyin ve nasıl oluşturulacağını söyleyen bir BUILD dosyası yazın.
BUILD
Alana özgü bir dil olan Starlark'ı kullanarak derleme hedeflerini bildirerek
BUILD
dosyanızı yazarsınız. (Örneği burada görebilirsiniz.)Derleme hedefi, Bazel'in oluşturacağı giriş yapıtları kümesini ve bunların bağımlılıklarını, Bazel'in oluşturmak için kullanacağı derleme kuralını ve derleme kuralını yapılandıran seçenekleri belirtir.
Derleme kuralı, Bazel'in kullanacağı derleme araçlarını (ör. derleyiciler ve bağlayıcılar) ve bunların yapılandırmalarını belirtir. Bazel, desteklenen platformlarda desteklenen dillerdeki en yaygın yapıt türlerini kapsayan bir dizi derleme kuralıyla birlikte gelir.
Bazel'i komut satırından çalıştırın. Bazel, çıktılarınızı çalışma alanına yerleştirir.
Bazel'i derlemenin yanı sıra testleri çalıştırmak ve kodunuzdaki bağımlılıkları izlemek için derlemeye sorgu göndermek üzere de kullanabilirsiniz.
Bazel derleme süreci
Bazel, derleme veya test çalıştırırken şunları yapar:
Hedefle alakalı
BUILD
dosyaları yükler.Girişleri ve bağımlılıklarını analiz eder, belirtilen derleme kurallarını uygular ve bir işlem grafiği oluşturur.
Son derleme çıktıları üretilene kadar girişlerde derleme işlemlerini yürütür.
Önceki tüm derleme çalışmaları önbelleğe alındığından Bazel, önbelleğe alınan yapıları tanımlayıp yeniden kullanabilir ve yalnızca değişenleri yeniden derleyebilir veya yeniden test edebilir. Doğruluğu daha da zorunlu kılmak için Bazel'i, derlemeleri ve testleri sanal alan oluşturma yoluyla hermetik olarak çalıştıracak şekilde ayarlayabilirsiniz. Bu sayede, çarpıklık en aza indirilir ve yeniden üretilebilirlik en üst düzeye çıkarılır.
İşlem grafiği
İşlem grafiği, derleme eserlerini, bunlar arasındaki ilişkileri ve Bazel'in gerçekleştireceği derleme işlemlerini gösterir. Bu grafik sayesinde Bazel, dosya içeriğindeki değişikliklerin yanı sıra derleme veya test komutları gibi işlemlerdeki değişiklikleri izleyebilir ve daha önce hangi derleme çalışmalarının yapıldığını bilir. Grafik, kodunuzdaki bağımlılıkları kolayca izlemenizi de sağlar.
Başlangıç eğitimleri
Bazel'i kullanmaya başlamak için Getting Started (Başlangıç) başlıklı makaleyi inceleyin veya doğrudan Bazel eğitimlerine gidin: