Kurallar
takma ad
Kural kaynağını görüntülemealias(name, actual, compatible_with, deprecation, features, restricted_to, tags, target_compatible_with, testonly, visibility)
  alias kuralı, bir kuralın adlandırılacağı başka bir ad oluşturur.
  Takma ad yalnızca "normal" hedefler için çalışır. Özellikle package_group
  ve test_suite için takma ad oluşturulamaz.
Hedefin yeniden adlandırılması için birçok dosyada değişiklik yapılması gereken büyük depolarda diğer adlandırma yararlı olabilir. Ayrıca, bu mantığı birden fazla hedef için yeniden kullanmak istiyorsanız select işlev çağrısını depolamak için diğer ad kuralını da kullanabilirsiniz.
Takma ad kuralının kendi görünürlük bildirimi vardır. Diğer tüm açılardan, referans verdiği kural gibi davranır (ör.takma ad üzerindeki testonly yoksayılır; bunun yerine referans verilen kuralın testonly özelliği kullanılır). Ancak bazı küçük istisnalar vardır:
- 
      Takma adları komut satırında belirtilen testler çalıştırılmaz. Referans verilen testi çalıştıran bir takma ad tanımlamak için test_suitekuralınıtestsözelliğinde tek bir hedefle kullanın.
- 
      Ortam grupları tanımlarken environmentkurallarının diğer adları desteklenmez.--target_environmentkomut satırı seçeneğinde de desteklenmez.
Örnekler
filegroup(
    name = "data",
    srcs = ["data.txt"],
)
alias(
    name = "other",
    actual = ":data",
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
| name | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| actual | Etiket: zorunluBu takma adın referans verdiği hedef. Kural olması gerekmez, giriş dosyası da olabilir. | 
config_setting
Kural kaynağını görüntülemeconfig_setting(name, constraint_values, define_values, deprecation, distribs, features, flag_values, licenses, tags, testonly, values, visibility)
Yapılandırılabilir özellikleri tetiklemek amacıyla beklenen bir yapılandırma durumuyla (derleme işaretleri veya platform kısıtlamaları olarak ifade edilir) eşleşir. Bu kuralın nasıl kullanılacağı hakkında bilgi edinmek için select, genel özelliklere genel bakış için Yapılandırılabilir özellikler başlıklı makaleyi inceleyin.
Örnekler
Aşağıdaki, --compilation_mode=opt veya -c opt değerini ayarlayan tüm derlemelerle eşleşir (komut satırında açıkça veya .bazelrc dosyalarından dolaylı olarak):
  
  config_setting(
      name = "simple",
      values = {"compilation_mode": "opt"}
  )
  Aşağıdaki, ARM'yi hedefleyen ve özel tanımlamayı uygulayan tüm derlemelerle eşleşir
  FOO=bar (örneğin, bazel build --cpu=arm --define FOO=bar ...):
  
  config_setting(
      name = "two_conditions",
      values = {
          "cpu": "arm",
          "define": "FOO=bar"
      }
  )
  Aşağıdaki, user-defined flag'i ayarlayan tüm derlemelerle eşleşir
     --//custom_flags:foo=1 (komut satırında açıkça veya .bazelrc dosyalarından örtülü olarak):
  
  config_setting(
      name = "my_custom_flag_is_set",
      flag_values = { "//custom_flags:foo": "1" },
  )
  Aşağıdaki, x86_64 mimarisine ve glibc sürüm 2.25'e sahip bir platformu hedefleyen tüm derlemelerle eşleşir. Bu eşleşme, //example:glibc_2_25 etiketli bir constraint_value öğesinin varlığı varsayılarak yapılır. Bir platform, bu ikisinin ötesinde ek kısıtlama değerleri tanımlasa bile eşleşmeye devam eder.
  
  config_setting(
      name = "64bit_glibc_2_25",
      constraint_values = [
          "@platforms//cpu:x86_64",
          "//example:glibc_2_25",
      ]
  )
  config_setting üst düzey komut satırı işaretleriyle eşleşmese bile bazı derleme hedefleriyle eşleşebileceği anlamına gelir.
  Notlar
- Birden fazla config_settingmevcut yapılandırma durumuyla eşleştiğinde ne olacağını öğrenmek için select bölümüne bakın.
- Kısa biçimleri destekleyen işaretler (ör. --compilation_modeve-c) içinvaluestanımları tam biçimde olmalıdır. Bunlar, her iki biçimdeki çağırmalarla otomatik olarak eşleşir.
- 
      Bir işaret birden fazla değer alıyorsa (ör. --copt=-Da --copt=-Dbveya liste türünde bir Starlark işareti),"a"gerçek listede herhangi bir yerde bulunuyorsavalues = { "flag": "a" }eşleşir.values = { "myflag": "a,b" }aynı şekilde çalışır: Bu,--myflag=a --myflag=b,--myflag=a --myflag=b --myflag=c,--myflag=a,bve--myflag=c,b,aile eşleşir. Tam anlamlar işaretler arasında farklılık gösterir. Örneğin,--coptaynı örnekte birden çok değeri desteklemez:--copt=a,b["a,b"]değerini,--copt=a --copt=bise["a", "b"]değerini üretir (bu nedenlevalues = { "copt": "a,b" }, ikincisiyle değil, ilkiyle eşleşir). Ancak--ios_multi_cpus(Apple kuralları için) yapılır:-ios_multi_cpus=a,bveios_multi_cpus=a --ios_multi_cpus=bifadeleri["a", "b"]sonucunu verir. İşaret tanımlarını kontrol edin ve koşullarınızı dikkatlice test ederek beklentilerinizi karşıladığını doğrulayın.
- Yerleşik derleme işaretleriyle modellenmeyen koşullar tanımlamanız gerekiyorsa 
      Starlark ile tanımlanan işaretleri kullanın. --definekarakterini de kullanabilirsiniz ancak bu karakter daha zayıf destek sunar ve önerilmez. Daha fazla bilgi için buraya göz atın.
- Farklı paketlerde aynı config_settingtanımlarını tekrarlamaktan kaçının. Bunun yerine, standart bir pakette tanımlanan ortak birconfig_settingöğesine referans verin.
- values,- define_valuesve- constraint_valuesaynı- config_settingiçinde herhangi bir kombinasyonla kullanılabilir ancak herhangi bir- config_settingiçin en az birinin ayarlanması gerekir.
Bağımsız değişkenler
| Özellikler | |
|---|---|
| name | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| constraint_values | Etiket listesi; yapılandırılamaz; varsayılan değer  config_settingile eşleşmek için belirtmesi gereken minimumconstraint_valueskümesi. (Yürütme platformu burada dikkate alınmaz.) Platformun sahip olduğu diğer tüm ek kısıtlama değerleri yoksayılır. Ayrıntılar için 
          Yapılandırılabilir Derleme Özellikleri başlıklı makaleyi inceleyin.İki  | 
| define_values | Sözlük: Dize -> Dize; nonconfigurable; varsayılan değer  valuesile aynıdır ancak
          özellikle--defineişareti için geçerlidir.
 Bu durumda: 
            config_setting(
                name = "a_and_b",
                values = {
                    "define": "a=1",
                    "define": "b=2",
                })
          aynı anahtar ( 
            config_setting(
                name = "a_and_b",
                define_values = {
                    "a": "1",
                    "b": "2",
                })
          
 
 | 
| flag_values | Sözlük: label -> Dize; nonconfigurable; varsayılan değer  valuesile aynıdır ancak 
          kullanıcı tanımlı derleme işaretleri için geçerlidir.Kullanıcı tanımlı işaretler etiket olarak, yerleşik işaretler ise rastgele dizeler olarak referans verildiğinden bu ayrı bir özelliktir. | 
| values | Sözlük: Dize -> Dize; nonconfigurable; varsayılan değer  Bu kural, kendisini bir  Kolaylık sağlamak için yapılandırma değerleri derleme işaretleri olarak (önünde  Bir işaret komut satırında açıkça ayarlanmamışsa varsayılan değeri kullanılır.
             Bir anahtar sözlükte birden çok kez görünüyorsa yalnızca son örnek kullanılır.
             Bir anahtar, komut satırında birden fazla kez ayarlanabilen bir işareti (ör. 
              
 | 
filegroup
Kural kaynağını görüntülemefilegroup(name, srcs, data, compatible_with, deprecation, distribs, features, licenses, output_group, restricted_to, tags, target_compatible_with, testonly, visibility)
  Hedef koleksiyonuna uygun bir ad vermek için filegroup simgesini kullanın.
  Bunlar daha sonra diğer kurallardan referans alınabilir.
  Dizinlere doğrudan referans vermek yerine filegroup kullanılması önerilir.
  Derleme sistemi, dizinin altındaki tüm dosyalar hakkında tam bilgiye sahip olmadığından bu dosyalar değiştiğinde yeniden derleme yapmayabilir. Bu nedenle, ikinci yöntem güvenilir değildir. glob ile birlikte kullanıldığında filegroup, tüm dosyaların derleme sistemi tarafından açıkça bilinmesini sağlayabilir.
Örnekler
  İki kaynak dosyasından oluşan bir filegroup oluşturmak için
filegroup(
    name = "mygroup",
    srcs = [
        "a_file.txt",
        "some/subdirectory/another_file.txt",
    ],
)
  Alternatif olarak, bir testdata dizinini taramak için glob kullanın:
filegroup(
    name = "exported_testdata",
    srcs = glob([
        "testdata/*.dat",
        "testdata/logs/**/*.log",
    ]),
)
  Bu tanımlardan yararlanmak için herhangi bir kuraldan alınan bir etiketle filegroup öğesine referans verin:
cc_library(
    name = "my_library",
    srcs = ["foo.cc"],
    data = [
        "//my_package:exported_testdata",
        "//my_package:mygroup",
    ],
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
| name | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| srcs | Etiket listesi; varsayılan değer  
           | 
| data | Etiket listesi; varsayılan değer  
           | 
| output_group | Dize; varsayılan değer  "Çıkış grubu", bir hedefin çıkış yapıtlarının kategorisidir ve bu kuralın uygulamasında belirtilir. | 
genquery
Kural kaynağını görüntülemegenquery(name, deps, data, compatible_with, compressed_output, deprecation, distribs, exec_compatible_with, exec_properties, expression, features, licenses, opts, restricted_to, scope, strict, tags, target_compatible_with, testonly, visibility)
  genquery(), Blaze sorgu dilinde belirtilen bir sorguyu çalıştırır ve sonucu bir dosyaya aktarır.
  
    Derlemenin tutarlı kalması için sorgunun yalnızca scope özelliğinde belirtilen hedeflerin geçişli kapanışını ziyaret etmesine izin verilir. Bu kuralı ihlal eden sorgular, yürütme sırasında başarısız olur. Bunun nedeni, strict değerinin belirtilmemiş olması veya doğru olmasıdır (strict değeri yanlışsa kapsam dışı hedefler uyarı verilerek atlanır). Bu durumun yaşanmaması için en kolay yöntem, sorgu ifadesindekiyle aynı etiketleri kapsamda belirtmektir.
  
    Burada ve komut satırında izin verilen sorgular arasındaki tek fark, joker karakter hedef spesifikasyonları (ör. //pkg:* veya //pkg:all) içeren sorgulara burada izin verilmemesidir.
    Bunun iki nedeni vardır: Birincisi, genquery, sorgunun geçişli kapanışının dışındaki hedeflerin çıkışını etkilemesini önlemek için bir kapsam belirtmelidir.İkincisi ise BUILD dosyaları, joker karakter bağımlılıklarını desteklemez (ör. deps=["//a/..."] izin verilmez).
  
    --output=graph|minrank|maxrank veya somepath üst düzey işlev olarak kullanıldığında hariç olmak üzere, deterministik çıkışı zorunlu kılmak için genquery'nin çıkışı sözlükbilimsel olarak sıralanır.
  
Çıkış dosyasının adı, kuralın adıdır.
Örnekler
Bu örnek, belirtilen hedefin geçişli kapanımındaki etiketlerin listesini bir dosyaya yazar.
genquery(
    name = "kiwi-deps",
    expression = "deps(//kiwi:kiwi_lib)",
    scope = ["//kiwi:kiwi_lib"],
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
| name | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| compressed_output | Boole değeri; varsayılan değer  Trueise sorgu çıkışı GZIP dosya biçiminde yazılır. Bu ayar, sorgu çıkışının büyük olması beklendiğinde Bazel'in bellek kullanımında ani artışları önlemek için kullanılabilir. Bazel, bu ayarın değerinden bağımsız olarak 220 bayttan büyük sorgu çıkışlarını dahili olarak sıkıştırdığından bu ayarıTrueolarak ayarlamak saklanan yığını azaltmayabilir. Ancak bu, Bazel'in çıkış dosyasını yazarken sıkıştırmayı açma işlemini atlamasına olanak tanır. Bu işlem, yoğun bellek kullanımı gerektirebilir. | 
| expression | Dize; zorunluYürütülecek sorgu. Komut satırının ve BUILD dosyalarındaki diğer yerlerin aksine, buradaki etiketler çalışma alanının kök dizinine göre çözümlenir. Örneğin, a/BUILDdosyasındaki bu özellikteki:betiketi,//:bhedefini ifade eder. | 
| opts | Dize listesi; varsayılan değer  bazel query'ya iletilebilen komut satırı seçeneklerine karşılık gelir. Burada bazı sorgu seçeneklerine izin verilmez:--keep_going,--query_file,--universe_scope,--order_resultsve--order_output. Burada belirtilmeyen seçenekler,bazel querykomut satırındaki gibi varsayılan değerlere sahip olur. | 
| scope | Etiketlerin listesi; zorunluSorgunun kapsamı. Sorgunun, bu hedeflerin geçişli kapanımının dışındaki hedeflere dokunmasına izin verilmez. | 
| strict | Boole değeri; varsayılan değer  | 
genrule
Kural kaynağını görüntülemegenrule(name, srcs, outs, cmd, cmd_bash, cmd_bat, cmd_ps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, executable, features, licenses, local, message, output_licenses, output_to_bindir, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)
genrule, kullanıcı tanımlı bir Bash komutu kullanarak bir veya daha fazla dosya oluşturur.
  Genrules, görev için belirli bir kural yoksa kullanabileceğiniz genel derleme kurallarıdır.
  Örneğin, tek satırlık bir Bash komutu çalıştırabilirsiniz. Ancak C++ dosyalarını derlemeniz gerekiyorsa mevcut cc_* kurallarına uymanız gerekir. Çünkü tüm ağır işler sizin için zaten yapılmıştır.
genrule'un komut bağımsız değişkenini yorumlamak için bir kabuk gerektirdiğini unutmayın. PATH'te bulunan rastgele programlara başvurmak da kolaydır ancak bu, komutu hermetik olmayan bir hale getirir ve tekrarlanamayabilir. Yalnızca tek bir aracı çalıştırmanız gerekiyorsa bunun yerine run_binary'yi kullanabilirsiniz.
  Testleri çalıştırmak için genrule kullanmayın. Önbelleğe alma politikaları ve ortam değişkenleri de dahil olmak üzere testler ve test sonuçları için özel muafiyetler vardır. Testlerin genellikle derleme tamamlandıktan sonra ve hedef mimaride çalıştırılması gerekirken genrules, derleme sırasında ve yürütme mimarisinde (ikisi farklı olabilir) yürütülür. Genel amaçlı bir test kuralına ihtiyacınız varsa sh_test kuralını kullanın.
Çapraz Derlemeyle İlgili Dikkat Edilmesi Gerekenler
Çapraz derleme hakkında daha fazla bilgi için kullanım kılavuzuna bakın.
Genrules, derleme sırasında çalıştırılır ancak çıktıları genellikle derlemeden sonra dağıtım veya test için kullanılır. Mikrodenetleyici için C kodu derleme örneğini ele alalım: Derleyici, C kaynak dosyalarını kabul eder ve mikrodenetleyicide çalışan kod oluşturur. Oluşturulan kod, derlenmesinde kullanılan CPU'da çalışamaz ancak C derleyicinin (kaynaktan derlendiyse) çalışması gerekir.
Derleme sistemi, derlemenin üzerinde çalıştığı makineleri tanımlamak için exec yapılandırmasını, derlemenin çıktısının üzerinde çalışması gereken makineleri tanımlamak için ise hedef yapılandırmayı kullanır. Bu seçeneklerin her birini yapılandırma imkanı sunar ve çakışmaları önlemek için ilgili dosyaları ayrı dizinlere ayırır.
  Derleme sistemi, genrules için bağımlılıkların uygun şekilde oluşturulmasını sağlar:
  srcs target yapılandırması için (gerekirse) oluşturulur,
  tools exec yapılandırması için oluşturulur ve çıkışın target yapılandırması için olduğu kabul edilir. Ayrıca, genrule komutlarının ilgili araçlara iletebileceği 
  "Make" değişkenleri de sağlar.
  Genrule'da deps özelliği tanımlanmaması kasıtlıdır: Diğer yerleşik kurallar, bağımlı kuralların nasıl işleneceğini otomatik olarak belirlemek için kurallar arasında aktarılan dile bağlı meta bilgileri kullanır ancak genrule'larda bu düzeyde bir otomasyon mümkün değildir. Genrules yalnızca dosya ve runfiles düzeyinde çalışır.
Özel Durumlar
  Exec-exec derlemesi: Bazı durumlarda, derleme sisteminin genrules'u, çıkışın derleme sırasında da yürütülebileceği şekilde çalıştırması gerekir. Örneğin, bir genrule daha sonra başka bir genrule tarafından kullanılan özel bir derleyici oluşturuyorsa, ilki çıkışını exec yapılandırması için üretmelidir. Çünkü derleyici, diğer genrule'da bu yapılandırmada çalışır. Bu durumda, derleme sistemi doğru şeyi otomatik olarak yapar: hedef yapılandırma yerine yürütme yapılandırması için ilk genrule'un srcs ve outs öğelerini oluşturur. Daha fazla bilgi için kullanım kılavuzuna bakın.
JDK ve C++ Araçları: JDK veya C++ derleyici paketinden bir araç kullanmak için derleme sistemi, kullanılacak bir dizi değişken sağlar. Ayrıntılar için "Marka" değişkeni bölümüne bakın.
Genrule Ortamı
  genrule komutu, bir komut veya işlem hattı başarısız olduğunda başarısız olacak şekilde yapılandırılmış bir Bash kabuğu tarafından set -e -o pipefail kullanılarak yürütülür.
  Derleme aracı, yalnızca PATH, PWD, TMPDIR gibi temel değişkenleri tanımlayan temizlenmiş bir işlem ortamında Bash komutunu yürütür.
  Derlemelerin yeniden üretilebilir olmasını sağlamak için kullanıcının kabuk ortamında tanımlanan değişkenlerin çoğu genrule'un komutuna iletilmez. Ancak Bazel (Blaze değil), kullanıcının PATH ortam değişkeninin değerini geçirir.
  PATH değerinde yapılan herhangi bir değişiklik, Bazel'in komutu bir sonraki derlemede yeniden yürütmesine neden olur.
  
Bir genrule komutu, şu anda zorunlu kılınmamış olsa da, komutun alt işlemleri olan süreçlere bağlanmak dışında ağa erişmemelidir.
Derleme sistemi, mevcut tüm çıkış dosyalarını otomatik olarak siler ancak bir genrule çalıştırmadan önce gerekli üst dizinleri oluşturur. Ayrıca, başarısızlık durumunda tüm çıkış dosyalarını kaldırır.
Genel Tavsiye
- Genrule tarafından çalıştırılan araçların deterministik ve hermetik olduğundan emin olun. Çıkışlarına zaman damgaları yazmamalı, kümeler ve haritalar için sabit sıralama kullanmalı ve çıkışa yalnızca göreli dosya yolları yazmalı, mutlak yollar yazmamalıdır. Bu kurala uyulmaması durumunda: Beklenmedik derleme davranışları (Bazel'in, derleyeceğini düşündüğünüz bir genrule'u yeniden derlememesi) ortaya çıkar. Önbellek performansı düşer.
- Çıkışlar, araçlar ve kaynaklar için $(location)'ı kapsamlı bir şekilde kullanın. Farklı yapılandırmalar için çıkış dosyalarının ayrılması nedeniyle, genrules sabit kodlanmış ve/veya mutlak yollara dayanamaz.
- Aynı veya çok benzer genrule'lar birden fazla yerde kullanılıyorsa ortak bir Starlark makrosu yazın. Genrule karmaşıksa bunu bir komut dosyasında veya Starlark kuralı olarak uygulamayı düşünebilirsiniz. Bu, okunabilirliğin yanı sıra test edilebilirliği de artırır.
- Çıkış kodunun, genrule'un başarılı veya başarısız olduğunu doğru şekilde gösterdiğinden emin olun.
- stdout veya stderr'ye bilgilendirici mesajlar yazmayın. Bu, hata ayıklama için yararlı olsa da kolayca gürültüye dönüşebilir. Başarılı bir genrule sessiz olmalıdır. Öte yandan, başarısız olan bir genrule iyi hata mesajları vermelidir.
- $$evaluates to a- $, a literal dollar-sign, so in order to invoke a shell command containing dollar-signs such as- ls $(dirname $x), one must escape it thus:- ls $$(dirname $$x).
- Sembolik bağlantılar ve dizinler oluşturmaktan kaçının. Bazel, genrules tarafından oluşturulan dizin/sembolik bağlantı yapısını kopyalamaz ve dizinlerin bağımlılık kontrolü güvenilir değildir.
- Diğer kurallarda genrule'a referans verirken genrule'un etiketini veya tek tek çıkış dosyalarının etiketlerini kullanabilirsiniz. Bazen bir yaklaşım daha okunabilir olur, bazen de diğeri: Tüketici kuralının srcsbölümünde çıkışlara adlarıyla referans vermek, genrule'un diğer çıkışlarının yanlışlıkla alınmasını önler ancak genrule çok sayıda çıkış üretiyorsa bu işlem sıkıcı olabilir.
Örnekler
  Bu örnek foo.h oluşturur. Komut herhangi bir giriş almadığından kaynak yoktur. Komut tarafından çalıştırılan "binary", genrule ile aynı paketteki bir Perl komut dosyasıdır.
genrule(
    name = "foo",
    srcs = [],
    outs = ["foo.h"],
    cmd = "./$(location create_foo.pl) > \"$@\"",
    tools = ["create_foo.pl"],
)
  Aşağıdaki örnekte, filegroup
   ve başka bir genrule öğesinin çıkışlarının nasıl kullanılacağı gösterilmektedir. Açık $(location) yönergeleri yerine $(SRCS) kullanmanın da işe yarayacağını unutmayın. Bu örnekte, gösterim amacıyla $(location) kullanılmıştır.
genrule(
    name = "concat_all_files",
    srcs = [
        "//some:files",  # a filegroup with multiple files in it ==> $(locations)
        "//other:gen",   # a genrule with a single output ==> $(location)
    ],
    outs = ["concatenated.txt"],
    cmd = "cat $(locations //some:files) $(location //other:gen) > $@",
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
| name | Ad; zorunlu Bu hedef için benzersiz bir ad. Diğer BUILDkurallarınınsrcsveyadepsbölümünde bu kurala adıyla atıfta bulunabilirsiniz. Kural kaynak dosyalar oluşturuyorsasrcsözelliğini kullanmanız gerekir. | 
| srcs | Etiket listesi; varsayılan değer  
          Bu özellik,  
          Derleme sistemi, bu ön koşulların genrule komutu çalıştırılmadan önce oluşturulmasını sağlar. Bu ön koşullar, orijinal derleme isteğiyle aynı yapılandırma kullanılarak oluşturulur. Bu ön koşulların dosyalarının adları, komuta  | 
| outs | Dosya adlarının listesi; yapılandırılamaz; zorunluBu kural tarafından oluşturulan dosyaların listesi. Çıkış dosyaları paket sınırlarını aşmamalıdır. Çıkış dosyası adları, pakete göre yorumlanır. 
           
          genrule komutunun, her çıkış dosyasını önceden belirlenmiş bir konumda oluşturması beklenir.
          Konum,  | 
| cmd | Dize; varsayılan değer  $(location)
        ve "Marka" değişkeni yerine koyma işlemine tabidir.
 cmd_bash,cmd_psvecmd_batiçin yedek seçenektir.
        Bu seçeneklerden hiçbiri geçerli değilse kullanılır.
        Komut satırı uzunluğu platform sınırını (Linux/macOS'te 64K, Windows'da 8K) aşarsa genrule, komutu bir komut dosyasına yazar ve bu komut dosyasını çalıştırarak sorunu çözer. Bu, tüm cmd özellikleri ( | 
| cmd_bash | Dize; varsayılan değer   Bu özellik,  | 
| cmd_bat | Dize; varsayılan değer   Bu özellik,  
 | 
| cmd_ps | Dize; varsayılan değer   Bu özellik,  
 Powershell'in daha kolay kullanılabilmesi ve daha az hata içermesi için, genrule'da Powershell komutunu yürütmeden önce ortamı ayarlamak üzere aşağıdaki komutları çalıştırırız. 
 | 
| executable | Boole; yapılandırılamaz; varsayılan değer  
          Bu işareti True olarak ayarlamak, çıkışın yürütülebilir bir dosya olduğu ve  Oluşturulan yürütülebilir dosya için veri bağımlılıklarını bildirme desteklenmez. | 
| local | Boole değeri; varsayılan değer  
          Doğru olarak ayarlanırsa bu seçenek,  
          Bu, etiket olarak "local" ( | 
| message | Dize; varsayılan değer  
          Bu derleme adımı yürütülürken yazdırılacak bir ilerleme mesajı. Varsayılan olarak, mesaj "Çıkış oluşturuluyor" (veya benzer şekilde sıkıcı bir mesaj) şeklindedir ancak daha spesifik bir mesaj sağlayabilirsiniz. Bu özelliği,  | 
| output_licenses | Lisans türü; varsayılan değer  common attributes
        sayfasına göz atın. | 
| output_to_bindir | Boole; yapılandırılamaz; varsayılan değer  
          True olarak ayarlanırsa bu seçenek, çıkış dosyalarının  | 
| tools | Etiket listesi; varsayılan değer  
          Derleme sistemi, genrule komutu çalıştırılmadan önce bu ön koşulların karşılanmasını sağlar. Bu araçlar derlemenin bir parçası olarak yürütüldüğünden, exec
          yapılandırması kullanılarak oluşturulur. Tek bir  
           | 
starlark_doc_extract
Kural kaynağını görüntülemestarlark_doc_extract(name, deps, src, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, render_main_repo_name, restricted_to, symbol_names, tags, target_compatible_with, testonly, visibility)
starlark_doc_extract(), belirli bir .bzl veya .scl dosyasında tanımlanan ya da yeniden dışa aktarılan kurallar, işlevler (makrolar dahil), yönler ve sağlayıcılarla ilgili dokümanları ayıklar. Bu kuralın çıkışı, Bazel kaynak ağacındaki stardoc_output.proto içinde tanımlanan bir ModuleInfo ikili proto'dur.
Örtülü çıkış hedefleri
- name.binaryproto(varsayılan çıkış): A- ModuleInfoikili proto.
- name.textproto(yalnızca açıkça istenirse oluşturulur):- name.binaryprotouygulamasının metin proto sürümü.
Uyarı: Bu kuralın çıkış biçiminin sabit olacağı garanti edilmez. Bu doküman, esas olarak Stardoc'un şirket içi kullanımı için hazırlanmıştır.
Bağımsız değişkenler
| Özellikler | |
|---|---|
| name | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| deps | Etiket listesi; varsayılan değer  load()-ed bysrcolan Starlark dosyalarını sarmalayan hedeflerin listesi. Bu hedefler normal kullanımdabzl_libraryhedefleri olmalıdır ancakstarlark_doc_extractkuralı bunu zorunlu kılmaz veDefaultInfoiçinde Starlark dosyaları sağlayan tüm hedefleri kabul eder.Sarmalanmış Starlark dosyalarının kaynak ağacındaki dosyalar olması gerektiğini unutmayın. Bazel,  | 
| src | Etiket: zorunluDokümanların ayıklanacağı Starlark dosyası. Bunun kaynak ağacındaki bir dosya olması gerektiğini unutmayın. Bazel,  | 
| render_main_repo_name | Boole değeri; varsayılan değer  //foo:bar.bzl,@main_repo_name//foo:bar.bzlolarak yayınlanır).Ana depoda kullanılacak ad, ana deponun  Bu özellik, yalnızca aynı depoda kullanılmak üzere tasarlanan Starlark dosyaları için doküman oluşturulurken  | 
| symbol_names | Dize listesi; varsayılan değer  
 
 | 
test_suite
Kural kaynağını görüntülemetest_suite(name, compatible_with, deprecation, distribs, features, licenses, restricted_to, tags, target_compatible_with, testonly, tests, visibility)
test_suite, insanlar için "faydalı" olarak kabul edilen bir dizi testi tanımlar. Bu özellik, projelerin "check-in işleminden önce çalıştırmanız gereken testler", "projemizin yük testleri" veya "tüm küçük testler" gibi test kümeleri tanımlamasına olanak tanır. blaze test komutu bu tür bir sıralamaya uyar: blaze test //some/test:suite gibi bir çağırma işleminde Blaze önce //some/test:suite hedefi tarafından geçişli olarak dahil edilen tüm test hedeflerini numaralandırır (buna "test_suite genişletme" diyoruz), ardından Blaze bu hedefleri oluşturur ve test eder.
Örnekler
Mevcut paketteki tüm küçük testleri çalıştırmak için kullanılan bir test paketi.
test_suite(
    name = "small_tests",
    tags = ["small"],
)
Belirli bir test grubunu çalıştıran bir test paketi:
test_suite(
    name = "smoke_tests",
    tests = [
        "system_unittest",
        "public_api_unittest",
    ],
)
Mevcut paketteki kararsız olmayan tüm testleri çalıştırmak için kullanılan bir test paketi.
test_suite(
    name = "non_flaky_test",
    tags = ["-flaky"],
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
| name | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| tags | Dize listesi; yapılandırılamaz; varsayılan değer  "-" karakteriyle başlayan etiketler negatif etiket olarak kabul edilir. Önündeki "-" karakteri etiketin bir parçası olarak kabul edilmez. Bu nedenle, "-small" boyutundaki bir paket etiketi, testin "small" boyutuyla eşleşir. Diğer tüm etiketler pozitif etiket olarak kabul edilir. İsteğe bağlı olarak, pozitif etiketleri daha net hale getirmek için etiketler "+" karakteriyle de başlayabilir. Bu karakter, etiketin metninin bir parçası olarak değerlendirilmez. Bu yalnızca olumlu ve olumsuz ayrımını okumayı kolaylaştırır. Yalnızca pozitif etiketlerin tümüyle ve negatif etiketlerin hiçbiriyle eşleşen test kuralları test paketine dahil edilir. Bunun, filtrelenen testlere bağımlılıklarla ilgili hata kontrolünün atlandığı anlamına gelmediğini unutmayın.Atlanan testlere bağımlılıkların yine de geçerli olması gerekir (ör. görünürlük kısıtlamaları tarafından engellenmemelidir). 
           
          Bir testin  
          Birbirini dışlayan etiketlere sahip testler içeren bir  | 
| tests | Etiket listesi; yapılandırılamaz; varsayılan değer  
          Burada dilden bağımsız olarak tüm  
           |