Bazel, dizin ağaçlarında düzenlenmiş kaynak kodundan şu adla yazılım oluşturur:
ekleyebilirsiniz. Çalışma alanı, tanımlanmış bir kod deposu grubundan oluşur. Kaynak
depolardaki dosyalar, iç içe yerleştirilmiş bir paket hiyerarşisinde düzenlenir.
her paket, ilgili kaynak dosyalar ve bir dizi ilgili kaynak dosyayı içeren bir dizindir.
BUILD
dosyası yükleyin. BUILD
dosyası, hangi yazılım çıkışlarının derlenebileceğini belirtir.
gösterir.
Kod depoları
Bazel derlemesinde kullanılan kaynak dosyalar depolarda düzenlenir (genellikle
depolar olarak kısaltılmıştır. Depo, bir dizin ağacıdır ve üzerinde
kökü; bu sınır işaretçi dosyası MODULE.bazel
, REPO.bazel
veya
eski bağlamlarda, WORKSPACE
veya WORKSPACE.bazel
.
Geçerli Bazel komutunun çalıştırıldığı depoya ana depo. Diğer, (harici) depolar depo kurallarıyla tanımlanır; bkz. harici bağımlılıklarına genel bakış makalesini inceleyebilirsiniz.
Çalışma alanı
Çalışma alanı, aynı kullanabilirsiniz. Ana depoyu ve tanımlanmış tüm harici depolar.
Geçmişte “depo” kavramlarının ve "workspace", oldu birleştirilmiş; "çalışma alanı" terimi genellikle proje yaşam döngüsünde veri deposudur ve bazen "depo" ile eş anlamlı olarak da kullanılır.
Paketler
Bir depodaki kod organizasyonunun birincil birimi pakettir. CEVAP paket, ilgili dosyalardan oluşan bir koleksiyondur ve bu dosyaların ve çıktı yapıları oluşturmak için kullanılır.
Paket, bir dizin olarak tanımlanır ve
BUILD
veya BUILD.bazel
adlı BUILD
dosyası. CEVAP
paketi, dizinindeki tüm dosyaları ve altındaki tüm alt dizinleri içerir.
(kendileri bir BUILD
dosyası içerenler hariç). Bu tanıma göre
dosyası veya dizini iki farklı paketin parçası olabilir.
Örneğin, aşağıdaki dizin ağacında my/app
,
ve my/app/tests
alt paketi. my/app/data
öğesinin bir paket olmadığını ve
my/app
paketine ait bir dizindir.
src/my/app/BUILD
src/my/app/app.cc
src/my/app/data/input.txt
src/my/app/tests/BUILD
src/my/app/tests/test.cc
Hedefler
Paket, paketin
BUILD
dosyası. Çoğu hedef, dosyalar ve kurallar olmak üzere iki ana türden biridir.
Dosyalar iki türe ayrılır. Kaynak dosyalar genellikle ve depoya giriş yaptı. Oluşturulan dosyalar, türetilmiş dosyalar veya çıkış dosyaları olarak da adlandırılır oluşturulan verileri içerebilir.
İkinci hedef türü, bir kural ile belirtilir. Her kural örneği bir girdi kümesi ile bir çıkış dosyaları kümesi arasındaki ilişkiyi belirtir. İlgili içeriği oluşturmak için kullanılan bir kurala yapılan girişler kaynak dosya olabilir, ancak bunlar aynı zamanda diğer kurallar.
Bir kurala ait girişin kaynak dosya mı yoksa oluşturulan bir dosya mı olduğu durumlar önemsizdir; önemli olan sadece ilgili dosyanın içeriğidir. Bu bilgi karmaşık bir kaynak dosyanın, Google Earth'te bulunan bir kullanıcının oluşturduğu manuel olarak yüksek düzeyde kontrol sahibi olmanın getirdiği yapılandırılmış bir dosya çok yorucu hale gelir ve biri bunu türetmek için bir program yazar. Söz konusu dosyanın tüketicilerinin herhangi bir değişiklik yapmasına gerek yoktur. Öte yandan, oluşturulmuş bir dosyası yalnızca yerel değişiklikler içeren bir kaynak dosyayla kolayca değiştirilebilir.
Bir kurala yapılan girişler, başka kuralları da içerebilir. Böyle bir şeyin tam anlamı çoğu zaman oldukça karmaşıktır ve dile ya da kurala bağlıdır, basittir: bir C++ kitaplık kuralı A'da başka bir C++ kitaplığı olabilir için B kuralına ekleyin. Bu bağımlılığın etkisi, B'nin başlık dosyalarının B'nin sembolleri derleme sırasında A tarafından kullanılabilir, bağlantısı ve B'nin çalışma zamanı verileri yürütme sırasında A'ya sunulur.
Tüm kuralların değişmeyen bir yönü, bir kural tarafından oluşturulan dosyaların her zaman ait olduğu kuralın kendisiyle aynı pakete sahiptir; aynı zamanda başka bir paket. Bir kurala ait girişlerin başka bir kaynaktan gelmesi sık karşılaşılan bir durum değildir paketten yararlanın.
Paket grupları,
kuralları vardır. Paket grupları, package_group
işleviyle tanımlanır. Onlar
üç özelliği vardır: içerdikleri paketlerin listesi, adları ve diğer
paket gruplarını da dahil edin. Bunlara referans vermek için izin verilen tek yol
visibility
özelliğinden veya default_visibility
özelliğinden
package
işlevi; Dosya oluşturmaz veya kullanmazlar. Daha fazla
package_group
dokümanlarına göz atın.