Bu sayfada Bazel hakkında bilgi sahibi olduğunuz varsayılır ve Bazel'ın özelliklerinden en iyi şekilde yararlanmak için projelerinizi yapılandırmaya yönelik kurallar ve öneriler sunulur.
Genel hedefler şunlardır:
- Paralelliğe ve artımlılığa izin vermek için ayrıntılı bağımlılıklar kullanmak.
- Bağımlılıkların iyi kapsanmasını sağlamak için.
- Kodu iyi yapılandırılmış ve test edilebilir hale getirmek için.
- Anlaşılması ve bakımı kolay bir derleme yapılandırması oluşturmak için.
Bu kurallar zorunlu değildir: Birkaç proje, tümüne uyum sağlayabilir. lint için kullanılan man sayfasında belirtildiği gibi: "Katı denetimle hata vermeyen gerçek bir program oluşturan ilk kişiye özel bir ödül verilecek." Ancak bu ilkelerin mümkün olduğunca çoğunun dahil edilmesi, bir projeyi daha okunabilir, hataya daha az açık ve daha hızlı oluşturulmasını sağlamalıdır.
Bu sayfa bu RFC'de açıklanan gereklilik düzeylerini kullanır.
Derleme ve test çalıştırma
Bir proje
bazel build //... ve
bazel test //... özelliklerini kararlı dalında her zaman başarıyla çalıştırabilmelidir. Gerekli olan ancak belirli durumlarda oluşturulmayan hedefler (örneğin, belirli derleme işaretleri gerektir, belirli bir platformda derleme, lisans sözleşmeleri gerektir) mümkün olduğunca spesifik şekilde etiketlenmelidir (örneğin, "
requires-osx"). Bu etiketleme, hedeflerin "manuel" etiketinden daha ayrıntılı bir düzeyde filtrelenmesini sağlar ve
BUILD dosyasını inceleyen bir kişinin, hedef kısıtlamalarını anlamasını sağlar.
Üçüncü taraf bağımlılıkları
Üçüncü taraf bağımlılıklarını bildirebilirsiniz:
- Bunları
WORKSPACEdosyasında uzak depo olarak bildirin.
- Dilerseniz çalışma alanı dizininizin altındaki
third_party/adlı bir dizine de ekleyebilirsiniz.
İkili programlara bağlı olarak
Her şey mümkün olduğunda kaynaktan derlenmelidir. Diğer bir deyişle,
some-library.so kitaplığına bağlı kalmak yerine
BUILD dosyası oluşturup kaynaklarından
some-library.so oluşturursunuz ve ardından bu hedefe bağımlı olursunuz.
Kaynaktan her zaman derleme oluşturmak, derlemelerin uyumlu olmayan işaretlerle veya farklı bir mimariyle oluşturulmuş bir kitaplığı kullanmamasını sağlar. Kapsam, statik analiz veya dinamik analiz gibi yalnızca kaynakta çalışan bazı özellikler de vardır.
Sürüm oluşturma
Mümkünse tüm kodu kafadan oluşturmayı tercih edin. Sürümlerin kullanılması gerektiğinde, sürümü hedef adına dahil etmekten kaçının (örneğin,
//guava-20.0 yerine
//guava). Bu adlandırma, kitaplığın güncellenmesini kolaylaştırır (yalnızca bir hedefin güncellenmesi gerekir). Elmas bağımlılık sorunlarına karşı da daha dayanıklıdır: Bir kitaplık
guava-19.0 ve bir kitaplık
guava-20.0 bağımlıysa iki farklı sürüme bağımlı olacak bir kitaplığınız olabilir.
Her iki hedefi de bir
guava kitaplığına yönlendirmek için yanıltıcı bir takma ad oluşturduysanız
BUILD dosyaları yanıltıcı olur.
.bazelrc dosyasını kullanma
Projeye özel seçenekler için
workspace/.bazelrc yapılandırma dosyasını kullanın (bazelrc biçimine bakın).
Projenizde, kaynak kontrolüne göz atmak istemediğiniz kullanıcı başına seçenekleri desteklemek istiyorsanız şu satırı ekleyin:
try-import %workspace%/user.bazelrc
workspace/.bazelrc dosyanızdaki (veya başka bir dosya adı)
ve
.gitignore dosyanıza
user.bazelrc ekleyin.
Paketler
Oluşturulabilir dosyalar içeren her dizin bir paket olmalıdır. Bir
BUILD dosyası, alt dizinlerdeki (ör.
srcs = ["a/b/C.java"]) dosyalara işaret ediyorsa
BUILD dosyasının söz konusu alt dizine eklenmesi gerekir. Bu yapı ne kadar uzun süre geçerli olursa yanlışlıkla döngüsel bağımlıların oluşturulması o kadar olasıdır, bir hedefin kapsamı süzülür ve artan ters bağımlılıkların sayısı güncellenir.