İşlem
Derleme sırasında çalıştırılacak bir komut. Örneğin, yapıları giriş olarak alan ve diğer yapıları çıkış olarak üreten bir derleyici çağrısı. Komut satırı bağımsız değişkenleri, işlem anahtarı, ortam değişkenleri ve bildirilen giriş/çıkış yapıları gibi meta verileri içerir.
Şu makaleyi de inceleyebilirsiniz: Kural belgelerini
İşlem önbelleği
Yürütülen işlemlerin, oluşturdukları çıkışlarla eşlemesini depolayan disk üzerinde önbellek. Önbellek anahtarı, işlem anahtarı olarak bilinir. Bazel'in artımlılık modeli için temel bileşenlerden biridir. Önbellek, çıkış temel dizininde depolanır ve böylece, Bazel sunucusunun yeniden başlatılması durumunda hayatta kalır.
İşlem grafiği
Bu işlemlerin okuduğu ve oluşturduğu eylemlerin ve yapıların bellek içi grafiği. Grafik, kaynak dosya olarak bulunan (örneğin, dosya sisteminde) yapıların yanı sıra BUILD
dosyalarında bahsedilmeyen, oluşturulmuş ara/nihai yapıları içerebilir. Analiz aşamasında üretilir ve yürütme aşamasında kullanılır.
İşlem grafiği sorgusu (sorgu)
Derleme işlemleri üzerinde sorgu oluşturabilen bir sorgu aracı. Bu, derleme kurallarının gerçek iş derlemelerine nasıl dönüştüğünü analiz etme olanağı sağlar.
İşlem tuşu
Bir işlemin önbellek anahtarı. Eyleme bağlı olarak işlemde yürütülecek komutu, derleyici bayraklarını, kitaplık konumlarını veya sistem başlıklarını içerebilecek işlem meta verilerine göre hesaplanır. Bazel'in tek tek işlemleri belirgin bir şekilde önbelleğe almasını veya geçersiz kılmasını sağlar.
Analiz aşaması
Yapının ikinci aşaması. BUILD
dosyalarında belirtilen hedef grafiği işleyerek yürütme aşamasında gerçekleştirilecek işlemlerin sırasını belirleyen bir bellek içi işlem grafiği oluşturur. Bu, kural uygulamalarının
değerlendirildiği aşamadır.
Yapı
Kaynak dosya veya oluşturulmuş bir dosya Ağaç yapıları olarak bilinen bir dosya dizini de olabilir.
Bir yapı, birden fazla işleme ait bir girdi olabilir ancak yalnızca en fazla bir işlemle oluşturulmalıdır.
Dosya hedefine karşılık gelen bir yapı, bir etiketle belirtilebilir.
En Boy Oranı
Kuralların bağımlılıklarında ek işlemler oluşturan bir mekanizma. Örneğin, hedef A B'ye bağımlıysa bir bağımlılık kenarından B'ye yukarı geçen ve ek çıkış dosyaları oluşturmak ve toplamak için B'de ek işlemler çalıştıran bir özellik uygulanabilir. Bu ek işlemler, aynı özelliğin gerekli olduğu hedefler arasında önbelleğe alınır ve yeniden kullanılır. aspect()
Starlark Build API işleviyle oluşturulmuştur. Örneğin, IDE'ler için meta veri oluşturmak ve hata analizi yapma ile ilgili işlemler oluşturmak için kullanılabilir.
Ayrıca bkz. Yön belgeleri
En-Boy
Yönlerin başka yönlerin sonuçlarına uygulanabildiği bir bileşim mekanizması. Örneğin, IDE'ler tarafından kullanılmak üzere bilgi oluşturan bir özellik, protondan .java
dosyaları oluşturan bir detayın üzerine uygulanabilir.
A
özelliğinin B
özelliğine ek olarak uygulanması için B
özelliğinin provides
özelliğinde reklam yayınlayan sağlayıcılar, A
tarafından required_aspect_providers
özelliğinde belirtilen şekilde eşleşmelidir.
Özellik
Hedef başına derleme bilgilerini ifade etmek için kullanılan, kural parametresi.
Örnekler arasında sırasıyla bir hedefin kaynak dosyalarını, bağımlılıklarını ve özel derleyici seçeneklerini tanımlayan srcs
, deps
ve copts
yer alır. Belirli bir hedef için kullanılabilecek belirli özellikler, hedefin kural türüne bağlıdır.
.bazelrc
Bazel'in yapılandırma dosyası, başlangıç işaretleri ve komut işaretleri için varsayılan değerleri değiştirmek ve daha sonra --config
işareti kullanılarak Bazel komut satırında birlikte ayarlanabilecek ortak seçenek gruplarını tanımlamak için kullanılır. Bazel birden fazla bazelrc dosyasındaki (sistem genelinde, çalışma alanı başına, kullanıcı başına veya özel bir konumdan) ayarları birleştirebilir. Ayrıca, bir bazelrc
dosyası, diğer bazelrc
dosyalarındaki ayarları da içe aktarabilir.
Blaze
Bazel'in Google'daki dahili sürümü. tek deposu için Google'ın ana derleme sistemidir.
DERLEME Dosyası
BUILD
dosyası, Bazel'a oluşturulması gereken yazılım çıkışlarının neler olduğunu, bunların bağımlılıklarının ne olduğunu ve bunların nasıl oluşturulacağını bildiren ana yapılandırma dosyasıdır. Bazel, girdi olarak bir BUILD
dosyası alır ve bağımlılık grafiğini oluşturmak ve ara ve son yazılım çıkışları oluşturmak için tamamlanması gereken işlemleri türetmek için bu dosyayı kullanır. BUILD
dosyası, bir dizini ve BUILD
dosyasını içermeyen tüm alt dizinleri paket olarak işaretler ve kurallar tarafından oluşturulan hedefleri içerebilir. Dosya, BUILD.bazel
olarak da adlandırılabilir.
BUILD.bazel Dosyası
BUILD
Dosyası bölümüne bakın. Aynı dizindeki bir BUILD
dosyasına göre önceliklidir.
.bzl Dosyası
Starlark'ta yazılan kuralları, makroları ve sabitleri tanımlayan bir dosyadır. Daha sonra bu dosyalar, load()
işlevi kullanılarak BUILD
dosyalarına aktarılabilir.
Grafik oluştur
Bazel'in derleme gerçekleştirmek için oluşturup geçirdiği bağımlılık grafiği. Hedefler, yapılandırılmış hedefler, işlemler ve yapılar gibi düğümler içerir. İstenen bir hedef grubunun bağlı olduğu tüm yapıların güncel olduğu doğrulandığında, derleme tamamlanmış olarak kabul edilir.
Derleme ayarı
Starlark tarafından tanımlanan bir yapılandırma parçasıdır. Geçişler, derleme ayarlarını bir alt grafiğin yapılandırmasını değiştirebilir. Kullanıcıya derleme işareti olarak da bilinen bir komut satırı işareti olarak gösterilirse.
Derlemeyi temizle
Önceki derlemelerin sonuçlarını kullanmayan bir derleme. Bu, genellikle artımlı derlemeden daha yavaştır ancak genellikle daha doğru olarak kabul edilir. Bazel hem temiz hem de artımlı derlemelerin her zaman doğru olduğunu garanti eder.
İstemci-sunucu modeli
bazel
komut satırı istemcisi, Bazel komutlarını yürütmek için yerel makinede otomatik olarak bir arka plan sunucusu başlatır. Sunucu, komutlar arasında çalışmaya devam eder ancak bir süre işlem yapılmadığında (veya açıkça bazel kapanmadığında) otomatik olarak durur. Bazel'in sunucu ve istemciye bölünmesi, JVM başlatma süresinin amorti edilmesine yardımcı olur ve eylem grafiği komutlar genelinde bellekte kaldığı için daha hızlı artımlı derlemeleri destekler.
Komut
bazel
build
, bazel test
, bazel run
ve bazel query
gibi farklı Bazel işlevlerini çağırmak için komut satırında kullanılır.
Komut işaretleri
Bir komuta özel işaret grubu. Komut işaretleri, komuttan (bazel build <command flags>
) sonra belirtilir. İşaretler, bir veya daha fazla komut için geçerli olabilir. Örneğin --configure
, yalnızca bazel sync
komutuna özel bir işarettir ancak --keep_going
; sync
, build
, test
ve daha fazlası için geçerlidir. İşaretler genellikle yapılandırma amacıyla kullanılır. Bu nedenle işaret değerlerindeki değişiklikler, Bazel'in bellek içi grafikleri geçersiz kılmasına ve analiz aşamasını yeniden başlatmasına neden olabilir.
Yapılandırma
Kural tanımları dışında, kuralların işlem oluşturma şeklini etkileyen bilgiler. Her derlemede hedef platformu, işlem ortamı değişkenlerini ve komut satırı derleme işaretlerini belirten en az bir yapılandırma bulunur. Geçişler, ana makine araçları veya çapraz derleme gibi ek yapılandırmalar oluşturabilir.
Şu makaleyi de inceleyebilirsiniz: Yapılandırmalar
Yapılandırma kırpma
Yalnızca bir hedefin gerçekten ihtiyaç duyduğu yapılandırma parçalarını içerme süreci. Örneğin, C++ bağımlılığı //:c
olan //:j
Java ikili programı derlerseniz, --javacopt
değerini değiştirmek C++ derleme önbellekliğini gereksiz şekilde bozacağından, //:c
yapılandırmasına --javacopt
değerini dahil etmek israflı olur.
Yapılandırılmış sorgu (cquery)
Yapılandırılmış hedefleri (analiz aşaması tamamlandıktan sonra) sorgulayan bir sorgu aracı. Yani select()
ve derleme işaretleri (--platforms
gibi) sonuçlara doğru şekilde yansıtılır.
Ayrıca bkz: cquery belgeleri
Yapılandırılmış hedef
Bir hedefin yapılandırma ile değerlendirilmesinin sonucu. Analiz aşaması, derlemenin seçeneklerini, oluşturulması gereken hedeflerle birleştirerek bunu sağlar.
Örneğin, //:foo
aynı derlemede iki farklı mimari için derleme yapıyorsa yapılandırılmış iki hedefi olur: <//:foo, x86>
ve <//:foo, arm>
.
Doğruluk
Bir derleme, çıkışı geçişli girişlerinin durumunu düzgün bir şekilde yansıttığında doğru olarak kabul edilir. Doğru derlemelere ulaşmak için Bazel, hermetik, yeniden oluşturulabilir ve derleme analizi ile işlem yürütmeyi deterministik hale getirmeye çalışır.
Bağımlı seçim
İki hedef arasında yönlendirilen bir kenar. //:foo
özellik değerleri //:bar
öğesine referans veriyorsa //:foo
hedefinin //:bar
hedefinde hedef bağımlılığı olur. //:foo
içindeki bir işlem, //:bar
içindeki bir eylem tarafından oluşturulan bir giriş yapısına bağlıysa //:foo
için //:bar
eylem bağımlılığı vardır.
Ayrılan
Geçişli bağımlılıklarla ilgili veri toplamak için kullanılan bir veri yapısı. Çok büyük depler'e (yüz binlerce dosyaya) sahip olma yaygın olduğundan, noktaları birleştirme zaman ve alan açısından verimli olacak şekilde optimize edilmiştir. Alan verimliliği nedeniyle diğer depleri yinelemeli olarak referans almak için uygulanır. Kural uygulamaları, kural derleme grafiğinin en üst düzeyinde olmadığı sürece, hataları listelere dönüştürerek "düzleştir memelidir". Büyük noktaların düzleştirilmesi, çok fazla bellek tüketimine neden olur. Bazel'in dahili uygulamasında iç içe yerleştirilmiş kümeler olarak da bilinir.
Ayrıca bkz. Depset belgeleri
Disk önbelleği
Uzaktan önbelleğe alma özelliği için yerel bir disk üzerinde blob deposu. Gerçek bir uzak blob mağazasıyla birlikte kullanılabilir.
Distribütör
Bazel'in depo kurallarını kullanarak internetten getireceği dosyaları içeren salt okunur bir dizin. Derlemelerin tamamen çevrimdışı olarak çalışmasını sağlar.
Dinamik yürütme
Çeşitli buluşsal yöntemlere göre yerel ve uzaktan yürütme arasında seçim yapan ve daha hızlı ve başarılı olan yöntemin yürütme sonuçlarını kullanan bir yürütme stratejisi. Bazı işlemler yerel olarak daha hızlı yürütülürken (ör. bağlama) bazıları da uzaktan daha hızlı gerçekleştirilir (örneğin, paralel yapılabilir derleme işlemi gibi). Dinamik yürütme stratejisi, olası en iyi artımlı ve temiz derleme sürelerini sağlayabilir.
Yürütme aşamasında
Yapının üçüncü aşaması. Analiz aşamasında oluşturulan eylem grafiğindeki işlemleri yürütür. Bu işlemler, yapıları okumak ve yazmak için yürütülebilir dosyaları (derleyiciler, komut dosyaları) çağırır. Spawn stratejileri şu işlemlerin nasıl yürütüleceğini kontrol eder: yerel, uzaktan, dinamik, korumalı alana alma, Docker vb.
Yürütme kökü
Korumalı alan içinde olmayan derlemelerde yerel işlemlerin yürütüldüğü, çalışma alanı çıkış tabanı dizininde yer alan bir dizin. Dizin içerikleri çoğunlukla çalışma alanından gelen giriş yapılarının sembolik bağlantılarıdır. Yürütme kökü, diğer girişler olarak harici depoların sembolik bağlantılarını ve çıkışları depolamak için bazel-out
dizinini de içerir. Derlemenin bağlı olduğu paketlerin geçişli olarak kapatılmasını temsil eden dizinlerden bir sembol bağlantı ormanı oluşturarak yükleme aşamasında hazırlanır. Komut satırından bazel info
execution_root
ile erişilebilir.
Dosya
Yapı bölümünü inceleyin.
Hermetiklik
Bir derleme, derleme ve test işlemleri üzerinde harici etki yoksa hermetiktir. Bu, sonuçların deterministik ve doğru olduğundan emin olmaya yardımcı olur. Örneğin, hermetik derlemeler genellikle ağ erişimine izin vermez, bildirilen girişlere erişimi kısıtlar, sabit zaman damgaları ile saat dilimlerini kullanır, ortam değişkenlerine erişimi kısıtlar ve rastgele sayı oluşturucular için sabit çekirdekler kullanır
Artımlı derleme
Artımlı derleme, derleme süresini ve kaynak kullanımını azaltmak için önceki derlemelerin sonuçlarını yeniden kullanır. Bağımlılık kontrolü ve önbelleğe alma, bu derleme türü için doğru sonuçlar üretmeyi amaçlar. Artımlı derleme, temiz derlemenin tersidir.
Şirket
Bir hedef için tanımlayıcı. //path/to/package:target
gibi tam nitelikli bir etiket, çalışma alanı kök dizinini işaretlemek için //
, hedefi bildiren BUILD
dosyasını içeren dizin olarak path/to/package
ve yukarıda belirtilen BUILD
dosyasında açıklanan hedef adı olarak :target
içerir. Hedefin my_repository
adlı bir ]harici depoda] tanımlandığını belirtmek için @my_repository//<..>
ön eki de eklenebilir.
Yükleme aşaması
Bazel'in WORKSPACE
, BUILD
ve .bzl
dosyalarını ayrıştırarak paket oluşturduğu bir derlemenin ilk aşaması. Makrolar ve glob()
gibi belirli işlevler bu aşamada değerlendirilir. Derlemenin ikinci aşaması olan analiz aşaması ile ara verilerek bir hedef grafik oluşturulur.
Makro
Tek bir Starlark işlevi altında birden fazla kural hedef bildirimini birlikte oluşturan bir mekanizma. BUILD
dosyalarında ortak kural bildirimi kalıplarının yeniden kullanılmasını sağlar. Yükleme aşamasında temel kural hedef bildirimlerine genişletildi.
Ayrıca bkz: Makro belgeleri
Hafıza güçlendirici
Kuraldaki bir işlemin ne yaptığını hızlı bir şekilde anlamak için kural yazarı tarafından seçilen, kullanıcıların okuyabileceği kısa bir dize. Anımsatıcılar, ortaya çıkma stratejisi seçimleri için tanımlayıcı olarak kullanılabilir. İşlem anımsatıcılarına örnek olarak Java kurallarından Javac
, C++ kurallarından CppCompile
ve Android kurallarından AndroidManifestMerger
verilebilir.
Yerel kurallar
Bazel'de yerleşik olarak bulunan ve Java'da uygulanan kurallar. Bu tür kurallar, .bzl
dosyalarında yerel modüldeki işlevler olarak görünür (örneğin, native.cc_library
veya native.java_library
). Kullanıcı tanımlı kurallar (yerel olmayan) Starlark kullanılarak oluşturulur.
Çıkış tabanı
Bazel çıkış dosyalarının depolanacağı çalışma alanına özel bir dizindir. Çıkışları çalışma alanının kaynak ağacından ayırmak için kullanılır. Çıkış kullanıcısı kökünde bulunur.
Çıkış grupları
Bazel hedef oluşturmayı bitirdiğinde oluşturulması beklenen bir dosya grubu. Kurallar, her zamanki çıkışlarını "varsayılan çıkış grubuna" (ör.cc_library
hedef için java_library
, .a
ve .so
öğesinin .jar
dosyası) yerleştirir. Varsayılan çıkış grubu, komut satırında bir hedef istendiğinde yapıları oluşturulan çıkış grubudur.
Kurallar, BUILD
dosyalarında (filegroup
kuralı) veya komut satırında (--output_groups
işareti) açıkça belirtilebilecek daha fazla adlandırılmış çıkış grubu tanımlayabilir.
Çıkış kullanıcı kökü
Bazel'in çıkışlarının depolandığı kullanıcıya özel bir dizin. Dizin adı, kullanıcının sistem kullanıcı adından türetilir. Sistemde aynı projeyi birden fazla kullanıcı aynı anda oluşturuyorsa çıkış dosyası çakışmalarını önler. Bağımsız çalışma alanlarının derleme çıkışlarına karşılık gelen alt dizinler (çıkış tabanları olarak da bilinir) içerir.
Paket
Bir BUILD
dosyası ile tanımlanan hedefler kümesi. Paket adı, BUILD
dosyasının çalışma alanı köküne göre yoludur. Bir paket, BUILD
dosyalarını içeren alt paketler veya alt dizinler içerebilir. Bu da bir paket hiyerarşisi oluşturur.
Paket grubu
Bir paket grubunu temsil eden bir hedef. Genellikle visibility
özellik değerlerinde kullanılır.
Platform
Derlemede yer alan "makine türü". Buna Bazel'in çalıştığı makine ("ana makine" platformu), makine derleme araçları ("yürütme" platformları) ve makine hedefleri ("hedef platformlar") için yürütülür.
Sağlayıcı
Bağımlılık ilişkileriyle birlikte kural hedefleri arasında geçirilecek bilgi birimini açıklayan bir şema. Bu liste genellikle derleyici seçenekleri, geçişli kaynak veya çıkış dosyaları ve derleme meta verileri gibi bilgileri içerir. Toplanan geçişli verileri verimli bir şekilde depolamak için depsets ile sık sık kullanılır. Yerleşik sağlayıcıya örnek olarak DefaultInfo
verilebilir.
Ayrıca bkz. Sağlayıcı dokümanları
Sorgu (kavram)
Hedef özellikleri ve bağımlılık yapılarını anlamak için derleme grafiğini analiz etme süreci. Bazel üç sorgu varyantını destekler: query, cquery ve aquery.
sorgu (komut)
Derlemenin yükleme sonrası hedef grafiği üzerinde çalışan bir sorgu aracı. Bu işlem nispeten hızlıdır ancak select()
öğelerinin etkilerini analiz edemez, işaretler derleyemez, yapıları veya işlem oluşturamazsınız.
Şu konulara da göz atın: Sorgu nasıl yapılır?, Sorgu referansı
Kod deposu önbelleği
Derlemeler için Bazel tarafından indirilen ve çalışma alanlarında paylaşılabilir, paylaşılan içerik adreslenebilir bir önbellek. İlk indirme işleminden sonra çevrimdışı derlemeleri etkinleştirir. Genellikle http_archive
gibi depo kuralları ve repository_ctx.download
gibi depo kuralı API'leri üzerinden indirilen dosyaları önbelleğe almak için kullanılır. Dosyalar, yalnızca indirme için SHA-256 sağlamaları belirtilmişse önbelleğe alınır.
Yeniden üretilebilirlik
Derleme veya testte kullanılan bir dizi girişin zaman, yöntem ya da ortamdan bağımsız olarak her seferinde her zaman aynı çıkış grubunu ürettiği bir derleme ya da test özelliğidir. Bu, çıkışların doğru veya istenen çıkışların her zaman doğru olduğu anlamına gelmez.
Kural
cc_library
gibi bir BUILD
dosyasında kural hedefleri tanımlamaya yönelik bir şema. BUILD
dosyasının yazarı açısından kural, bir dizi özellikden ve kara kutu mantığından oluşur. Bu mantık, kural hedefine çıkış yapılarının nasıl oluşturulacağını ve bilgilerin diğer kural hedeflerine nasıl iletileceğini belirtir. .bzl
yazarları açısından bakıldığında kurallar, Bazel'i yeni programlama dillerini ve ortamları destekleyecek şekilde genişletmenin birincil yoludur.
Kurallar, yükleme aşamasında kural hedefleri oluşturmak için örneklenir. Analiz aşaması kuralında hedefler, sağlayıcılar biçiminde aşağı akış bağımlılıklarına bilgi iletir ve çıkış yapılarının nasıl oluşturulacağını açıklayan işlemler kaydeder. Bu işlemler yürütme aşamasında gerçekleştirilir.
Şu makaleyi de inceleyebilirsiniz: Kural belgelerini
Kural hedefi
Bir kuralın örneği olan hedef. Dosya hedefleri ve paket gruplarıyla kontrast oluşturur. Kural ile karıştırılmamalıdır.
Çalıştırma dosyaları
Yürütülebilir bir hedefin çalışma zamanı bağımlılıkları. Yürütülebilir dosya, genellikle test kuralının yürütülebilir çıktısıdır ve çalıştırma dosyaları da testin çalışma zamanı verisi bağımlılıklarıdır. Yürütülebilir dosyanın çağrılmasından önce (bazel testi sırasında) Bazel, yürütülebilir test dosyasıyla birlikte çalıştırma dosyası ağacını kaynak dizin yapılarına göre hazırlar.
Ayrıca bkz. Runfiles dokümanları
Korumalı alana alma
Devam eden bir işlemi kısıtlanmış ve geçici bir yürütme kökü içinde izole ederek bildirilmemiş girişleri okumamasını veya bildirilmemiş çıkışları yazmamasını sağlamaya yardımcı olan bir teknik. Korumalı alan, hermetikliği büyük ölçüde iyileştirir ancak genellikle performans maliyetine sahiptir ve işletim sisteminin desteklenmesini gerektirir. Performans maliyeti platforma göre değişir. Linux'ta bu önemli bir nokta değildir ancak macOS'te korumalı alanı kullanılamaz hale getirebilir.
Gökyüzü Çerçevesi
Skyframe, Bazel'in temel paralel, işlevsel ve artımlı değerlendirme çerçevesidir.
Istampalama
Bazel tarafından oluşturulan yapılara ek bilgi yerleştirme özelliği. Örneğin bu; kaynak denetimi, derleme zamanı ve sürüm derlemelerinin çalışma alanı ya da ortamla ilgili diğer bilgileri için kullanılabilir.
Damga özelliğini destekleyen --workspace_status_command
işareti ve kurallar ile etkinleştirin.
Starlark
Kurallar ve makrolar yazmak için kullanılan uzantı dili. Yapılandırma amacı ve daha iyi performans sağlamak amacıyla, Python'un kısıtlanmış bir alt kümesi (sözdizimsel ve dil bilgisi olarak). .bzl
dosya uzantısını kullanır. BUILD
dosyaları Starlark'ın daha da kısıtlı bir sürümünü (def
işlev tanımı olmaması gibi) kullanır. Bu sürüm daha önce Skylark olarak bilinir.
Ayrıca bkz: Starlark dili dokümanları
Startup flag'leri
bazel
ile komut arasında belirtilen işaret grubu (ör. bazel --host_jvm_debug
derlemesi). Bu işaretler, Bazel sunucusunun yapılandırmasını değiştirir. Dolayısıyla başlangıç işaretlerinde yapılan herhangi bir değişiklik, sunucunun yeniden başlatılmasına neden olur. Başlangıç işaretleri herhangi bir komuta özel değildir.
Hedef
BUILD
dosyasında tanımlanan ve bir etiket ile tanımlanan nesne. Hedefler, son kullanıcı açısından çalışma alanının derlenebilir birimlerini temsil eder.
Kural örnekleyerek tanımlanan bir hedefe kural hedefi adı verilir. Kurala bağlı olarak, bunlar çalıştırılabilir (cc_binary
gibi) veya test edilebilir (cc_test
gibi). Kural hedefleri genellikle özellikleri (deps
gibi) aracılığıyla diğer hedeflere bağlıdır. Bu bağımlılıklar hedef grafiğin temelini oluşturur.
Kural hedeflerinin yanı sıra dosya hedefleri ve paket grubu hedefleri de vardır. Dosya hedefleri, BUILD
dosyası içinde başvurulan yapılara karşılık gelir. Özel bir durum olarak, herhangi bir paketin BUILD
dosyası her zaman o pakette kaynak dosya hedefi olarak kabul edilir.
Hedefler yükleme aşamasında bulunur. Analiz aşamasında hedefler, yapılandırılmış hedefler oluşturmak için yapı yapılandırmalarıyla ilişkilendirilir.
Hedef grafik
Hedefler ve bağımlılıklarının bellek içi grafiği. Yükleme aşamasında üretilir ve analiz aşamasında bir girdi olarak kullanılır.
Hedef kalıbı
Komut satırında bir hedef grubu belirtmenin bir yoludur. Yaygın olarak kullanılan kalıplar :all
(tüm kural hedefleri), :*
(tüm kural + dosya hedefleri),
...
(mevcut paket ve yinelenen şekilde tüm alt paketlerdir). Birlikte kullanılabilir. Örneğin //...:*
, çalışma alanı kökünden yinelemeli olarak tüm paketlerdeki tüm kural ve dosya hedefleri anlamına gelir.
Testler
Kural hedefleri, test kurallarından örneklendirilir ve bu nedenle yürütülebilir test dosyası içerir. Yürütülebilir dosya tamamlandıktan sonra sıfır dönüş kodu, testin başarılı olduğunu gösterir. Bazel ile testler arasındaki tam sözleşme (test ortamı değişkenleri, test sonucu toplama yöntemleri gibi) Test Ansiklopedisi'nde belirtilmiştir.
Araç Zinciri
Bir dil için çıkışlar oluşturmak amacıyla kullanılan bir araç seti. Araç zinciri genellikle derleyiciler, bağlayıcılar, yorumlayıcılar ve/veya linder'lar içerir. Araç zinciri de platforma göre değişiklik gösterebilir. Yani, araç zinciri aynı dil için olsa bile Unix derleyici araç zincirinin bileşenleri, Windows varyantı için farklılık gösterebilir. Platform için doğru araç zincirinin seçilmesine araç zinciri çözünürlüğü adı verilir.
Üst düzey hedef
Derleme hedefi Bazel komut satırında istenirse üst düzeydir. Örneğin, //:foo
//:bar
'a bağımlıysa ve bazel build //:foo
çağrılmışsa bu derleme için //:foo
üst düzeydir. //:bar
, her iki hedefin de oluşturulması gerekmesine rağmen üst düzey değildir. Üst düzey ve üst düzey olmayan hedefler arasındaki önemli fark, Bazel komut satırında (veya .bazelrc aracılığıyla) ayarlanan komut işaretlerinin üst düzey hedefler için yapılandırmayı ayarlamasıdır. Ancak üst düzey olmayan hedefler için bir geçiş ile değiştirilebilir.
Geçiş
Bir değerden diğerine yapılandırma durumunun eşlemesi. Aynı kuraldan örneklendirilmiş olsalar bile yapı grafiğindeki hedeflerin farklı yapılandırmalara sahip olmasını sağlar. Geçişlerin yaygın bir kullanımı, bölünmüş geçişlerdir. Bu geçişlerde hedef grafiğin belirli kısımları, her bir çatal için farklı yapılandırmalarla çatallanır. Örneğin, tek bir derlemede bölünmüş geçişleri kullanarak ARM ve x86 için derlenmiş yerel ikili programlara sahip bir Android APK'sı oluşturulabilir.
Ayrıca bkz. Kullanıcı tanımlı geçişler
Ağaç yapısı
Bir dosya koleksiyonunu temsil eden bir yapı. Bu dosyaların kendileri yapı olmadığından, bunlar üzerinde çalışan bir işlem yerine ağaç yapısını giriş veya çıktı olarak kaydetmelidir.
Görünürlük
Derleme sistemindeki istenmeyen bağımlılıkları engelleyen iki mekanizmadan biri: bir hedefin başka hedeflerin bağlı olup olmayacağını kontrol etmek için hedef görünürlük, bir BUILD
veya .bzl
dosyasının belirli bir .bzl
dosyasını yükleyip yükleyemeyeceğini kontrol eden yük görünürlüğü. Bağlam olmadan, genellikle "görünürlük",
hedef görünürlüğü ifade eder.
Ayrıca bkz: Görünürlük belgeleri
Workspace
Derlemek istediğiniz yazılımın WORKSPACE
dosyasını ve kaynak kodunu içeren bir dizin. //
ile başlayan etiketler, çalışma alanı dizinine göre belirlenir.
WORKSPACE dosyası
Bir dizinin çalışma alanı olduğunu tanımlar. Dosya boş olabilir, ancak ağdan veya yerel dosya sisteminden ek bağımlılıkları getirmek için genellikle harici depo bildirimleri içerir.