Bu bölümde, proje yönetiminde yaygın olarak kullanılan pek çok işlevi vardır.
İçindekiler
- Bourne kabuk belirteçleme
- Etiket Genişletme
- Çoğu derleme kuralı tarafından tanımlanan tipik özellikler
- Tüm derleme kurallarında ortak olan özellikler
- Tüm test kurallarında ortak özellikler (*_test)
- Tüm ikili kurallarda ortak özellikler (*_binary)
- Yapılandırılabilir özellikler
- Dolaylı çıkış hedefleri
Bourne kabuk belirteçleme
Bazı kuralların belirli dize özellikleri birden çok kurala bölünmüştür kelimeleri ile birlikte, aşağıdaki kodu da Bourne kabuğunun tokenizasyon kurallarına tırnak işareti içinde olmayan boşluklar ayrı kelimeleri sınırlar ve tek ve önlemek için çift tırnak karakterleri ve ters eğik çizgiler kullanılır. belirtiliyor.
Bu tokenizasyona tabi olan özellikler, bu belgedeki tanımlarında bu şekilde açıkça belirtilmedi.
  "Marka" işlemine tabi özellikler değişken genişletme ve Bourne kabuğu
  belirtkeleme genellikle rastgele seçeneklerin
  derleyiciler ve diğer araçlar. Bu tür özelliklere örnek olarak şunlar verilebilir:
  cc_library.copts ve java_library.javacopts.
  Bu ikameler birlikte bir
  yapılandırmaya özel bir listeye genişletilecek tek dizeli değişken
  içeren bir ifadedir.
Etiket genişletme
  Çok az sayıda kuralın bazı dize özellikleri etiketlenebilir
  genişletme: Bu dizeler
  //mypkg:target gibi bir alt dizedir ve bu etiket bir
  olarak bildirilen ön koşulu olarak,
  temsil edilen dosyanın yol adı
  hedef
  //mypkg:target
  Örnek özellikler arasında genrule.cmd ve
  cc_binary.linkopts.  Ayrıntılar proje zaman çizelgesinde
  ve göreceli etiketlerin uygun olup olmadığı
  genişletildi; birden fazla dosyaya genişleyen etiketlerin nasıl
  vb. gibi davranır. Kural özellikleriyle ilgili dokümanların
  özellikler.
Çoğu derleme kuralı tarafından tanımlanan tipik özellikler
Bu bölümde, birçok derleme kuralı tarafından tanımlanan özellikler ama hepsini değil.
| Özellik | Açıklama | 
|---|---|
| data | 
 Çalışma zamanında bu kural için gereken dosyalar. Dosya veya kural hedeflerini listeleyebilir. Genel olarak herhangi bir hedefe izin verir. 
 
Yeni kurallar işlenirse bir  | 
| deps | 
 
Bu hedefin bağımlılıkları. Genellikle yalnızca kural hedefleri listelenir. (
bazı kurallar, dosyaların doğrudan  Dile özgü kurallar, listelenen hedefleri genellikle belirli sağlayıcılar. 
Bir hedefin başka bir araca bağımlı olmasının tam anlamı
 
Çoğunlukla bir modülün kullanılmasına izin vermek için  | 
| licenses | 
 Bu hedef için kullanılacak lisans türü dizelerinin listesi. Bu, Bazel'in artık kullanmadığı, desteği sonlandırılmış bir lisanslama API'sinin bir parçasıdır. Şunları Yapmayın: bunu kullan. | 
| srcs | 
 
Bu kural tarafından işlenen veya eklenen dosyalar. Genellikle dosyaları doğrudan listeler, ancak
kural hedeflerini (ör.  Dile özgü kurallar, genellikle listelenen dosyaların belirli bir dosya uzantıları olduğunu unutmayın. | 
Tüm derleme kurallarında ortak özellikler
Bu bölümde, dolaylı olarak tüm derlemelere eklenen özellikler kurallar.
| Özellik | Açıklama | 
|---|---|
| compatible_with | 
 Bu hedefin oluşturulabileceği ortamların listesi ve ortamları için de görüntüleyebilirsiniz. Bu, Bazel'in kısıtlama sisteminin bir parçasıdır. Kullanıcılar, birbirine bağımlı olabilir ve olamaz. Örneğin, harici olarak dağıtılabilir ikili programlar şirket gizli kodu içeren kitaplıklara bağlı olmamalıdır. Görüntüleyin ConstraintSemantics (Kısıtlama Semantiği) bölümüne göz atın. | 
| deprecation | 
 Bu hedefle ilişkili açıklayıcı bir uyarı mesajı. Bu genellikle bir hedefin eskidiğini kullanıcılara bildirmek için kullanılır. veya başka bir kuralın yerini aldıysa, bir pakete özelse veya herhangi bir nedenle zararlı olarak değerlendirilebilir. Belgenize (bir web sayfası, hata numarası veya örnek taşıma CL'leri gibi) Böylece iletiden kaçınmak için hangi değişikliklerin yapılması gerektiğini kolayca anlayabilir. Bunun yerine kullanabileceğiniz yeni bir hedef varsa eski hedefin tüm kullanıcılarını taşımak iyi bir fikirdir. 
Bu özelliğin öğelerin oluşturulma şekli üzerinde herhangi bir etkisi yoktur, ancak
derleme aracının teşhis çıktısını etkileyebilir.  Derleme aracı,
 Paket içi bağımlılıklar bu uyarıdan muaftır. Bu nedenle, Örneğin, desteği sonlandırılmış bir kuralın testlerini oluşturmak bir uyarıyla karşılaşabilirsiniz. Kullanımdan kaldırılmış bir hedef, kullanımdan kaldırılan başka bir hedefe bağlıysa uyarı verilmez mesajını alırsınız. Kullanıcılar artık uygulamayı kullanmayı bıraktıktan sonra hedef kaldırılabilir. | 
| distribs | 
 Bu özel hedef için kullanılacak dağıtım yöntemi dizelerinin listesi. Bu, Bazel'in artık kullanmadığı, desteği sonlandırılmış bir lisanslama API'sinin bir parçasıdır. Şunları Yapmayın: bunu kullan. | 
| exec_compatible_with | 
 
İş Listesi
 | 
| exec_properties | 
  Bu hedef için seçilen bir platformun  Bir anahtar hem platform hem de hedef düzeyindeki mülklerde mevcutsa değer hedeften alınır. | 
| features | 
 Özellik, bir hedefte etkinleştirilebilen veya devre dışı bırakılabilen dize etiketidir. İlgili içeriği oluşturmak için kullanılan bir özelliğin anlamı kuralın kendisine bağlıdır. Bu  | 
| restricted_to | 
 Şu konum yerine bu hedefin oluşturulabileceği ortamların listesi: ortamları için de görüntüleyebilirsiniz. 
Bu, Bazel'in kısıtlama sisteminin bir parçasıdır. Görüntüleyin
 | 
| tags | 
   
  Etiketler herhangi bir kuralda kullanılabilir. Testteki etiketler ve
   
  Bazel, aşağıdakileri tespit ederse korumalı alan kodunun davranışını değiştirir
  anahtar kelimeler (herhangi bir testin  
 Testlerdeki etiketler genellikle hata ayıklama ve yayınlama sürecini takip etmenize yardımcı olur. Genellikle etiketler en çok C++ ve Python'da testlerine izin veriyoruz. Etiket ve boyut kullanımı öğeleri, kod tabanına dayalı olarak test paketlerinin derlenmesinde esneklik sağlar giriş politikası. 
  Bazel,
  Test kuralının  
 | 
| target_compatible_with | 
 
İş Listesi
 Geçişli olarak uyumsuz hedeflere bağlı olan hedefler Uyumsuz olarak kabul edilir. Ayrıca, oluşturma ve test için atlanırlar. Boş liste (varsayılan değerdir), hedefin uyumlu olduğunu gösterir uyumlu bir şekilde çalışır. 
 
Workspace Kuralları dışındaki tüm kurallar bunu destekler
özelliğini gönderin.
Bazı kurallarda bu özelliğin herhangi bir etkisi yoktur. Örneğin,
Şunun için  
 Bkz. Platformlar sayfasına bakın. | 
| testonly | 
 Doğru değerine ayarlanırsa yalnızca test amaçlı hedefler (testler gibi) bu hedefe bağlı olabilir. 
Aynı şekilde  
Testler ( Bu özelliğin amacı, hedefin üretime yayınlanan ikili programlarda bulunur. Çalışma zamanında değil, yalnızca test amaçlı olarak uygulanır ve üzerinden yaymak için, bu yöntemin mantıklı bir şekilde uygulanması gerekir. Örneğin, sahte ve sahtecilik amaçlı ve entegrasyon testleri için de yararlı olabilir. üretim kanalına yayınlanacak aynı ikili programları içeren ve bu nedenle büyük olasılıkla testonly olarak işaretlenmemelidir. Öte yandan, bağlantı kurmak bile tehlikelidir, belki de koşulsuz olarak normal davranışı geçersiz kılar, kesinlikle test amaçlı olarak işaretlenmelidir. | 
| toolchains | 
 
  Bu hedefin Değişkenleri oluştur olduğu hedef kümesi
  erişebilir. Bu hedefler, dönüşüm hunisinin üst kısmındaki
   
 
  Bunun proje yönetimi kavramından
    araç zinciri çözünürlüğü
    . Bunu kullanamazsınız
  belirli bir  | 
| visibility | 
 
Bir hedefteki  | 
Tüm test kurallarında ortak özellikler (*_test)
Bu bölümde, tüm test kurallarında ortak olan özellikler açıklanmaktadır.
| Özellik | Açıklama | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| args | 
 Ayarlandığında Bazel'in hedefe aktardığı komut satırı bağımsız değişkenleri
 
Bu bağımsız değişkenler, herhangi bir  | ||||||||||||||||||||
| env | 
   
  Test,
   
  Bu özellik yalnızca  | ||||||||||||||||||||
| env_inherit | 
 Şu kaynaktan devralınacak ek ortam değişkenlerini belirtir:
  test  
  Bu özellik yalnızca  | ||||||||||||||||||||
| size | 
 Bir test hedefinin "ağırlığını", yani çalıştırılması için ne kadar zaman/kaynak gerektiğini belirtir. Birim testleri "küçük", entegrasyon testleri "orta" ve uçtan uca testler "büyük" olarak kabul edilir veya
anlamına gelir. Bazel, varsayılan zaman aşımını belirlemek için boyutu kullanır. Bu zaman aşımı süresi
 Test boyutları, aşağıdaki varsayılan zaman aşımlarına ve varsayılan en yüksek yerel kaynak değerine karşılık gelir kullanımlar: 
 
 | ||||||||||||||||||||
| timeout | 
 Geri dönmeden önce testin ne kadar süre boyunca çalıştırılmasının beklendiği. 
Bir testin boyut özelliği kaynak tahminini kontrol ederken testin
zaman aşımı bağımsız olarak ayarlanabilir.  Açıkça belirtilmediği takdirde
zaman aşımı testin boyutuna bağlıdır. Test
zaman aşımı  
 
Yukarıdakiler dışındaki zamanlarda, test zaman aşımı
 Testi üretirken ortam değişkeni  | ||||||||||||||||||||
| flaky | 
 Testi hatalı olarak işaretler. Ayarlanırsa testi üç kereye kadar yürütür ve yalnızca şu koşulda başarısız olarak işaretler: her seferinde başarısızlığa uğrar. Bu özellik varsayılan olarak False (Yanlış) değerine ayarlanır ve test yalnızca bir kez uygulanır. Bu özelliğin kullanılmasının genellikle önerilmediğini unutmayın: onayları onaylandığında testlerin güvenilir bir şekilde başarılı olması gerekir. | ||||||||||||||||||||
| shard_count | 
 Paralel kırık sayısını belirtir kullanmanız gerekir. Bu değer,
paralel parçalara ayırmalıdır. Bazı testlerde
kurallarına göre, parçalamayı etkinleştirmek için bu parametre gerekebilir
en başta sunun. Ayrıca bkz.  Test parçalama etkinleştirilirse, testi oluştururken ortam değişkeni  Parçalama, test çalıştırıcının test parçalama protokolünü desteklemesini gerektirir. Aksi takdirde, büyük olasılıkla her parçada her kırıkta her testi çalıştırır. istemediğiniz bir şey değildir. Görüntüleyin Parçalama Testi bölümüne göz atın. | ||||||||||||||||||||
| local | 
 Testi, korumalı alana alınmadan yerel olarak çalıştırılmaya zorlar. Bunu True (Doğru) olarak ayarlamak, "local" değerini sağlamakla eşdeğerdir etiket olarak
( | 
Tüm ikili kurallarda ortak özellikler (*_ikili)
Bu bölümde, tüm ikili kurallarında ortak olan özellikler açıklanmaktadır.
| Özellik | Açıklama | 
|---|---|
| args | 
 
Yürütüldüğünde Bazel'in hedefe ileteceği komut satırı bağımsız değişkenleri
 
NOT: Hedef çalıştırıldığında bağımsız değişkenler iletilemez
başka bir komut dosyası kullanıyorsanız (örneğin, ikili dosyayı
 | 
| env | 
 Hedef aşağıdaki durumlarda ayarlanacak ek ortam değişkenlerini belirtir:
   
  Bu özellik yalnızca  
NOT: Hedefi çalıştırdığınızda ortam değişkenleri ayarlanmaz
başka bir komut dosyası kullanıyorsanız (örneğin, ikili dosyayı
 | 
| output_licenses | 
 Bu ikili programın oluşturduğu çıkış dosyalarının lisansları. Bu, Bazel'in artık kullanmadığı, desteği sonlandırılmış bir lisanslama API'sinin bir parçasıdır. Şunları Yapmayın: bunu kullan. | 
Yapılandırılabilir özellikler
Çoğu özellik "yapılandırılabilir" olduğundan değerleri hedef farklı şekillerde oluşturulur. Özel olarak, yapılandırılabilir özellikler Bazel komut satırına iletilen işaretlere veya aşağı akış bağımlılığının hedefi istiyor. Bu, kullanarak hedefi birden fazla platform veya derleme modu için özelleştirebilirsiniz.
  Aşağıdaki örnekte, farklı hedefler için farklı kaynaklar açıklanmaktadır.
  inceleyebilirsiniz. bazel build :multiplatform_lib --cpu x86 çalıştırılıyor
  hedefi x86_impl.cc ile oluşturur.
  --cpu arm, bunun yerine arm_impl.cc kullanmasına neden olur.
cc_library(
    name = "multiplatform_lib",
    srcs = select({
        ":x86_mode": ["x86_impl.cc"],
        ":arm_mode": ["arm_impl.cc"]
    })
)
config_setting(
    name = "x86_mode",
    values = { "cpu": "x86" }
)
config_setting(
    name = "arm_mode",
    values = { "cpu": "arm" }
)
  select() işlevi
  temel alınan yapılandırılabilir bir özellik için farklı alternatif değerler arasından seçim yapar.
  config_setting olan
  veya constraint_value
  hedef yapılandırmasının karşıladığı ölçütümüz olur.
  Bazel, yapılandırılabilir özellikleri makroları işlendikten sonra ve
  (teknik olarak
  
  yükleme ve analiz aşamaları) görüntüleyin.
  select() değerlendirmesinden önce yapılan işlemler, hangi işlemin gerçekleştirildiğini bilmez
  select() öğesinin seçer. Örneğin, makrolar değiştirilemez
  seçilen dala göre davranışlarını görebilir ve bazel query,
  Hedefin yapılandırılabilir bağımlılıkları hakkında yalnızca konservatif tahminlerde bulunun. Görüntüleyin
  
  bu SSS
  select() öğesini kurallar ve makrolarla kullanma hakkında daha fazla bilgi edinin.
  Dokümanlarında nonconfigurable olarak işaretlenen özellikler
  bu özelliği kullanabilirsiniz. Genellikle bir özellik yapılandırılamaz çünkü Bazel
  bir sorunun nasıl çözüleceğine karar vermeden önce
  select()
Bkz. Yapılandırılabilir Derleme Özellikleri'ne göz atın.
Dolaylı çıkış hedefleri
C++'taki örtülü çıkışlar kullanımdan kaldırılmıştır. Lütfen kullanmayın diğer dillerde de ekleyebilirsiniz. Henüz desteğimizi sonlandırmaya yönelik bir yolumuz yok ancak zaman içinde bu sistemlerin de desteği sonlandırılacaktır.
BUILD dosyasında bir derleme kuralı tanımladığınızda
  bir pakette yeni ve adlandırılmış kural hedefi tanımlayarak.  Birçok derleme kuralı
  işlevleri dolaylı olarak bir veya daha fazla çıkış dosyası gerektirir
  bir kurala özgüdür.
  Örneğin, açıkça bir
  java_binary(name='foo', ...) kural, siz de
  çıkış dosyasını dolaylı olarak tanımlama
  foo_deploy.jar adresini aynı paketin üyesi olarak hedefleyin.
  (Bu hedef, bağımsız bir Java arşividir.
  .)
  Dolaylı çıkış hedefleri, Google AdWords'ün
  hedef grafiğidir.  Tıpkı diğer hedefler gibi, isteğe bağlı olarak oluşturulurlar.
  üst düzey derleme komutta belirtildiğinde veya
  diğer derleme hedefleri için gerekli önkoşullardır.  Bilgilerin
  BUILD dosyalarında bağımlılık olarak referans verilir ve
  bazel query gibi analiz araçlarının çıktısı.
Her derleme kuralı türü için kuralın dokümanlarında bir ilgili gizli dokümanların adını ve içeriğini söz konusu kuralın bildirilmesine yol açan çıkışları içerebilir.
  Google Ads Temel Düzey
  derleme sistemi tarafından kullanılan iki ad alanı bulunur:
  etiketler hedefleri,
  Bunlar, kurallar veya dosyalar olabilir ve dosya hedefleri,
  kaynak (veya giriş) dosya hedefleri ve türetilen (veya çıkış) dosya
  belirler.  BUILD dosyalarında söyleyebileceğiniz şeyler şunlardır:
  komut satırından derlemek veya bazel query kullanarak incelemek;
  bu, hedef ad alanıdır.  Her dosya hedefi karşılık gelir
  ("dosya sistemi ad alanı") içine alır; her kural
  hedefi, diskteki sıfır, bir veya daha fazla gerçek dosyaya karşılık gelebilir.
  Diskte, karşılık gelen hedefi olmayan dosyalar olabilir; şunun için:
  örnek, C++ derlemesi sırasında üretilen .o nesne dosyaları
  öğesine BUILD dosyaları içinden veya komut satırından başvuruda bulunulamaz.
  Bu şekilde derleme aracı,
  bir fikir edinmiş oldunuz. Bu konu,
  BUILD Concept Reference (Konsept Referansı Derleme) başlıklı makaleyi inceleyin.