Komutlar ve Seçenekler

Bu sayfa, bazel build, bazel run ve bazel test gibi çeşitli Bazel komutlarıyla kullanılabilen seçenekleri içerir. Bu sayfa, Bazel ile oluştur konusundaki Bazel komutlarının listesine eşlik eder.

Hedef söz dizimi

build veya test gibi bazı komutlar, bir hedef listesi üzerinde çalışabilir. Bunlar, Oluşturulacak hedefler belirleme bölümünde açıklanan etiketlerden daha esnek bir söz dizimi kullanır.

Seçenekler

Aşağıdaki bölümlerde, derleme sırasında kullanılabilen seçenekler açıklanmaktadır. Bir yardım komutunda --long kullanıldığında, çevrimiçi yardım mesajları her seçeneğin anlamı, türü ve varsayılan değeri hakkında özet bilgi sağlar.

Çoğu seçenek yalnızca bir kez belirtilebilir. Birden çok kez belirtildiğinde son örnek kazanır. Birden çok kez belirtilebilen seçenekler, çevrimiçi yardımda "birden çok kez kullanılabilir" metniyle tanımlanır.

Paket konumu

--package_path

Bu seçenek, belirli bir pakete ait BUILD dosyasını bulmak için aranan dizin grubunu belirtir.

Bazel, paket yolu araması yaparak paketlerini bulur. Bu, her biri kısmi kaynak ağacının kökü olan, iki nokta üst üste işaretiyle ayrılmış sıralı bir bazel dizin listesidir.

--package_path seçeneğini kullanarak özel bir paket yolu belirtmek için:

  % bazel build --package_path %workspace%:/some/other/root

Paket yolu öğeleri üç biçimde belirtilebilir:

  1. İlk karakter / ise yol mutlaktır.
  2. Yol %workspace% ile başlarsa yol, çevresindeki en yakın Bazel dizinine göre alınır. Örneğin, çalışma dizininiz /home/bob/clients/bob_client/bazel/foo ise paket yolundaki %workspace% dizesi /home/bob/clients/bob_client/bazel olarak genişletilir.
  3. Diğer her şey çalışma dizinine göre alınır. Genellikle kastettiğiniz bu değildir ve Bazel'ı Bazel çalışma alanının altındaki dizinlerden kullanırsanız beklenmedik şekilde davranabilir. Örneğin, . paket yolu öğesini kullanır ve ardından cd öğesini /home/bob/clients/bob_client/bazel/foo dizinine eklerseniz paketler /home/bob/clients/bob_client/bazel/foo dizininden çözümlenir.

Varsayılan olmayan bir paket yolu kullanıyorsanız kolaylık olması için bunu Bazel yapılandırma dosyanızda belirtin.

Bazel, herhangi bir paketin geçerli dizinde olmasını gerektirmez. Bu nedenle, gerekli tüm paketlerin paket yolunda başka bir yerde bulunması durumunda boş bir Bazel çalışma alanından derleme yapabilirsiniz.

Örnek: Boş bir istemciden derleme

  % mkdir -p foo/bazel
  % cd foo/bazel
  % touch WORKSPACE
  % bazel build --package_path /some/other/path //foo

--deleted_packages

Bu seçenek, Bazel'ın silinmiş olarak kabul etmesi ve paket yolundaki herhangi bir dizinden yüklemeyi denememesi gereken paketlerin virgülle ayrılmış listesini belirtir. Bu özellik, paketleri gerçekten silmeden silinme işlemini simüle etmek için kullanılabilir.

Hata kontrolü

Bu seçenekler, Bazel'in hata kontrolü ve/veya uyarılarını kontrol eder.

--[no]check_visibility

Bu seçenek false (yanlış) değerine ayarlanırsa görünürlük kontrollerinin düzeyi uyarıya düşürülür. Bu seçeneğin varsayılan değeri true'dur. Böylece, görünürlük kontrolü varsayılan olarak yapılır.

--output_filter=regex

--output_filter seçeneği, yalnızca normal ifadeyle eşleşen hedefler için derleme ve derleme uyarılarını gösterir. Bir hedef, belirtilen normal ifadeyle eşleşmiyorsa ve yürütülmesi başarılı olursa standart çıkışı ve standart hatası atılır.

Aşağıda, bu seçenek için bazı genel değerler verilmiştir:

`--output_filter='^//(first/project|second/project):'` Belirtilen paketlerin çıkışını gösterir.
`--output_filter='^//((?!(first/bad_project|second/bad_project):).)*$'` Belirtilen paketler için çıkış gösterme.
`--output_filter=` Her şeyi gösterin.
`--output_filter=DONT_MATCH_ANYTHING` Hiçbir şey gösterme.

Araç işaretleri

Bu seçenekler, Bazel'ın diğer araçlara hangi seçenekleri ileteceğini kontrol eder.

--copt=cc-option

Bu seçenek, derleyiciye iletilecek bir bağımsız değişkeni alır. Bağımsız değişken C, C++ ya da derleyici kodu ön işlemesi, derlemesi ve/veya derlenmesi için her çağrıldığında derleyiciye iletilir. Bağlantı oluştururken iletilmez.

Bu seçenek birden çok kez kullanılabilir. Örneğin:

  % bazel build --copt="-g0" --copt="-fpic" //foo

foo kitaplığını hata ayıklama tabloları olmadan derleyerek konumdan bağımsız kod oluşturur.

--host_copt=cc-option

Bu seçenek, ana makine yapılandırmasında derlenen kaynak dosyalar için derleyiciye iletilecek bir bağımsız değişkeni alır. Bu, --copt seçeneğine benzer ancak yalnızca ana makine yapılandırması için geçerlidir.

--host_conlyopt=cc-option

Bu seçenek, ana makine yapılandırmasında derlenen C kaynak dosyaları için derleyiciye iletilecek bir bağımsız değişkeni alır. Bu, --conlyopt seçeneğine benzer ancak yalnızca ana makine yapılandırması için geçerlidir.

--host_cxxopt=cc-option

Bu seçenek, ana makine yapılandırmasında derlenen C++ kaynak dosyaları için derleyiciye iletilecek bir bağımsız değişkeni alır. Bu, --cxxopt seçeneğine benzer ancak yalnızca ana makine yapılandırması için geçerlidir.

--host_linkopt=linker-option

Bu seçenek, ana makine yapılandırmasında derlenen kaynak dosyalar için bağlayıcıya iletilecek bir bağımsız değişkeni alır. Bu, --linkopt seçeneğine benzer ancak yalnızca ana makine yapılandırması için geçerlidir.

--conlyopt=cc-option

Bu seçenek, C kaynak dosyaları derlenirken derleyiciye iletilecek bir bağımsız değişkeni alır.

Bu, --copt işlevine benzer ancak yalnızca C derlemesi için geçerlidir. C++ derlemesi veya bağlantı oluşturma için geçerli değildir. Böylece, C'ye özgü seçenekleri (-Wno-pointer-sign gibi) --conlyopt kullanarak iletebilirsiniz.

--cxxopt=cc-option

Bu seçenek, C++ kaynak dosyalarını derlerken derleyiciye iletilecek bir bağımsız değişkeni alır.

Bu, --copt işlevine benzer ancak yalnızca C++ derlemesi için geçerlidir. C derlemesi veya bağlantı oluşturma için geçerli değildir. Böylece, C++'a özgü seçenekleri (-fpermissive veya -fno-implicit-templates gibi) --cxxopt kullanarak iletebilirsiniz.

Örneğin:

  % bazel build --cxxopt="-fpermissive" --cxxopt="-Wno-error" //foo/cruddy_code

--linkopt=linker-option

Bu seçenek, bağlantı oluştururken derleyiciye iletilecek bir bağımsız değişkeni alır.

Bu, --copt işlevine benzer ancak yalnızca bağlantı oluşturma için geçerlidir, derleme için geçerli değildir. Böylece, --linkopt kullanarak yalnızca bağlantı zamanında anlamlı olan derleyici seçeneklerini (-lssp veya -Wl,--wrap,abort gibi) aktarabilirsiniz. Örneğin:

  % bazel build --copt="-fmudflap" --linkopt="-lmudflap" //foo/buggy_code

Derleme kuralları, özelliklerinde bağlantı seçeneklerini de belirtebilir. Bu seçeneğin ayarları her zaman önceliklidir. Ayrıca cc_library.linkopts bölümüne bakın.

--strip (always|never|sometimes)

Bu seçenek, bağlayıcıyı -Wl,--strip-debug seçeneğiyle çağırarak Bazel'in tüm ikililer ve paylaşılan kitaplıklardan hata ayıklama bilgilerini kaldırıp kaldırmayacağını belirler. --strip=always, hata ayıklama bilgilerini her zaman çıkarma anlamına gelir. --strip=never, hata ayıklama bilgilerini asla çıkarmayacağı anlamına gelir. --compilation_mode fastbuild ise --strip=sometimes varsayılan değeri, şerit anlamına gelir.

  % bazel build --strip=always //foo:bar

oluşturulan tüm ikili programlardan hata ayıklama bilgilerini kaldırırken hedefi derler.

Bazel'in --strip seçeneği, ld'in --strip-debug seçeneğine karşılık gelir: Bu seçenek yalnızca hata ayıklama bilgilerini kaldırır. Herhangi bir nedenle yalnızca hata ayıklama simgelerini değil, tüm sembolleri de kaldırmak isterseniz ld --strip-all seçeneğini kullanmanız gerekir. Bunu, --linkopt=-Wl,--strip-all öğesini Bazel'a aktararak yapabilirsiniz. Ayrıca, Bazel'in --strip işaretini ayarlamanın --linkopt=-Wl,--strip-all değerini geçersiz kılacağını unutmayın. Bu nedenle, yalnızca birini ayarlamanız gerekir.

Yalnızca tek bir ikili program oluşturuyorsanız ve tüm simgelerin çıkarılmasını istiyorsanız --stripopt=--strip-all değerini geçip hedefin //foo:bar.stripped sürümünü açıkça oluşturabilirsiniz. --stripopt bölümünde açıklandığı gibi, bu yöntem derlemenin tüm bağlantı işlemlerine çıkarma eklemek yerine, son ikili program bağlandıktan sonra bir çıkarma işlemi uygular.

--stripopt=strip-option

Bu, *.stripped ikili programı oluştururken strip komutuna iletilebilecek ek bir seçenektir. Varsayılan değer -S -p'dir. Bu seçenek birden çok kez kullanılabilir.

--fdo_instrument=profile-output-dir

--fdo_instrument seçeneği, oluşturulmuş C/C++ ikili programı yürütüldüğünde FDO (geri bildirim odaklı optimizasyon) profili çıkışının oluşturulmasını sağlar. GCC'de sağlanan bağımsız değişken, her bir .o dosyasının profil bilgilerini içeren .gcda dosyalarının nesne başına dosya dizin ağacı için dizin öneki olarak kullanılır.

Profil veri ağacı oluşturulduktan sonra, profil ağacı sıkıştırılmalı ve FDO için optimize edilmiş derlemenin etkinleştirilmesi için --fdo_optimize=profile-zipBazel seçeneğine sağlanmalıdır.

LLVM derleyicisi için bağımsız değişken, aynı zamanda ham LLVM profili veri dosyalarının döküldüğü dizindir. Örneğin: --fdo_instrument=/path/to/rawprof/dir/.

--fdo_instrument ve --fdo_optimize seçenekleri aynı anda kullanılamaz.

--fdo_optimize=profile-zip

--fdo_optimize seçeneği, derleme sırasında FDO (geri bildirime yönelik optimizasyon) optimizasyonları gerçekleştirmek için nesne başına dosya profili bilgilerinin kullanılmasını sağlar. GCC için sağlanan bağımsız değişken, .gcda dosyalarının önceden oluşturulmuş dosya ağacını içeren ve her bir .o dosyasının profil bilgilerini içeren zip dosyasıdır.

Alternatif olarak, sağlanan bağımsız değişken .afdo uzantısıyla tanımlanan bir otomatik profile işaret edebilir.

LLVM derleyicisi için sağlanan bağımsız değişken, llvm-profdata aracı tarafından hazırlanan dizine eklenmiş LLVM profili çıkış dosyasına işaret etmeli ve bir .profdata uzantısına sahip olmalıdır.

--fdo_instrument ve --fdo_optimize seçenekleri aynı anda kullanılamaz.

--[no]output_symbol_counts

Etkinleştirilirse C++ yürütülebilir ikili programın altın çağrılı her bağlantısı, bir sembol sayısı dosyası oluşturur (--print-symbol-counts altın seçeneği ile). Dosya, her bağlayıcı girişi için tanımlanan simge sayısını ve ikili programda kullanılan sembol sayısını günlüğe kaydeder. Bu bilgiler, gereksiz bağlantı bağımlılıklarını izlemek için kullanılabilir. Sayım simgesi dosyası, ikili programın çıkış yoluna [targetname].sc adıyla yazılır.

Bu seçenek varsayılan olarak devre dışıdır.

--java_language_version=version

Bu seçenek Java kaynaklarının sürümünü belirtir. Örneğin:

  % bazel build --java_language_version=8 java/com/example/common/foo:all

derler ve yalnızca Java 8 spesifikasyonuyla uyumlu yapılara izin verir. Varsayılan değer 11'dir. --> Olası değerler: 8, 9, 10, 11, 14 ve 15'tir ve default_java_toolchain kullanarak özel Java araç zincirlerini kaydederek genişletilebilir.

--tool_java_language_version=version

Bir derleme sırasında yürütülen araçlar oluşturmak için kullanılan Java dili sürümü. Varsayılan değer 11'dir.

--java_runtime_version=version

Bu seçenek, kodu yürütmek ve testleri çalıştırmak için kullanılacak JVM sürümünü belirtir. Örneğin:

  % bazel run --java_runtime_version=remotejdk_11 java/com/example/common/foo:java_application

JDK 11'i uzak bir depodan indirir ve bu dosyayı kullanarak Java uygulamasını çalıştırır.

localjdk, varsayılan değerdir. Olası değerler şunlardır: localjdk, localjdk_version, remotejdk_11 ve remote_jdk17. local_java_repository veya remote_java_repostory deposu kurallarını kullanıp özel JVM kaydederek değerleri genişletebilirsiniz.

--tool_java_runtime_version=version

Bir derleme sırasında gerekli araçları yürütmek için kullanılan JVM sürümü. remotejdk_11, varsayılan değerdir.

--jvmopt=jvm-option

Bu seçenek, seçenek bağımsız değişkenlerinin Java sanal makinesine aktarılmasını sağlar. Tek bir büyük bağımsız değişkenle veya farklı bağımsız değişkenlerle birden çok kez kullanılabilir. Örneğin:

  % bazel build --jvmopt="-server -Xms256m" java/com/example/common/foo:all

tüm Java ikili programlarını başlatmak için sunucu sanal makinesini kullanır ve sanal makinenin başlangıç yığın boyutunu 256 MB'a ayarlar.

--javacopt=javac-option

Bu seçenek, seçenek bağımsız değişkenlerinin javac'ya geçirilmesine olanak tanır. Tek bir büyük bağımsız değişkenle veya farklı bağımsız değişkenlerle birden çok kez kullanılabilir. Örneğin:

  % bazel build --javacopt="-g:source,lines" //myprojects:prog

bir java_binary dosyasını, javac varsayılan hata ayıklama bilgileriyle (bazel varsayılanı yerine) yeniden oluşturur.

Bu seçenek, javac için Bazel yerleşik varsayılan seçeneklerinden sonra ve kural başına seçeneklerden önce javac'ya aktarılır. Javac için herhangi bir seçeneğin son spesifikasyonu kazanır. Javac için varsayılan seçenekler şunlardır:

  -source 8 -target 8 -encoding UTF-8

--strict_java_deps (default|strict|off|warn|error)

Bu seçenek, javac'nın eksik doğrudan bağımlılıkları kontrol edip etmediğini kontrol eder. Java hedefleri, doğrudan kullanılan tüm hedefleri bağımlılık olarak açıkça beyan etmelidir. Bu işaret, javac'ya, her bir Java dosyasının tür kontrolü için gerçekte kullanılan jar'ları belirlemesini ve bunlar geçerli hedefin doğrudan bağımlılığının sonucu değilse uyarı/hata talimatı verir.

  • off, kontrolün devre dışı bırakıldığı anlamına gelir.
  • warn, javac'nin eksik olan her bir doğrudan bağımlılık için [strict] türünde standart Java uyarıları oluşturacağı anlamına gelir.
  • default, strict ve error değerlerindeki tüm ortalama javac değerleri uyarı yerine hata oluşturur. Bu da, eksik doğrudan bağımlılıklar bulunursa mevcut hedefin oluşturulamamasına neden olur. Bu, bayrak belirtilmediğinde varsayılan davranıştır.

Anlambilim oluşturun

Bu seçenekler, derleme komutlarını ve/veya çıkış dosyası içeriğini etkiler.

--compilation_mode (fastbuild|opt|dbg) (-c)

--compilation_mode seçeneği (genellikle -c olarak kısaltılır, özellikle -c opt olarak kısaltılır) fastbuild, dbg veya opt bağımsız değişkenini alır ve optimizasyon düzeyi ile hata ayıklama tablolarının eksiksizliği gibi çeşitli C/C++ kod oluşturma seçeneklerini etkiler. Bazel, her bir farklı derleme modu için farklı bir çıkış dizini kullanır. Böylece, her sefer baştan sona yeniden derlemeye gerek kalmadan modlar arasında geçiş yapabilirsiniz.

  • fastbuild, olabildiğince hızlı derleme anlamına gelir: Minimum hata ayıklama bilgisi (-gmlt -Wl,-S) oluşturun ve optimizasyon yapmayın. Bu varsayılan seçenektir. Not: -DNDEBUG ayarlanmayacaktır.
  • dbg, gdb'yi (veya başka bir hata ayıklayıcıyı) kullanabilmeniz için hata ayıklamanın etkin (-g) özelliğiyle derleme anlamına gelir.
  • opt, optimizasyonun etkinleştirildiği ve assert() çağrılarının devre dışı bırakıldığı (-O2 -DNDEBUG) derleme anlamına gelir. --copt -g değerini iletmediğiniz sürece opt modunda hata ayıklama bilgileri oluşturulmaz.

--cpu=cpu

Bu seçenek, derleme sırasında ikili programların derlemesi için kullanılacak hedef CPU mimarisini belirtir.

--action_env=VAR=VALUE

Tüm işlemlerin yürütülmesi sırasında kullanılabilen ortam değişkenleri grubunu belirtir. Değişkenler ada göre belirtilebilir. Bu durumda değer, çağrı ortamından veya değeri çağrı ortamından bağımsız olarak ayarlayan name=value çifti tarafından alınır.

Bu --action_env işareti birden fazla kez belirtilebilir. Bir değer, birden fazla --action_env işaretinde aynı değişkene atanırsa en son atama kazanır.

--experimental_action_listener=label

experimental_action_listener seçeneği, Bazel'a derleme grafiğine extra_actions eklemek için label tarafından belirtilen action_listener kuralındaki ayrıntıları kullanmasını söyler.

--[no]experimental_extra_action_top_level_only

Bu seçenek doğru değerine ayarlanırsa --experimental_action_listener komut satırı seçeneği tarafından belirtilen ek işlemler yalnızca üst düzey hedefler için planlanır.

--experimental_extra_action_filter=regex

experimental_extra_action_filter seçeneği, Bazel'a extra_actions için programlanacak hedef grubunu filtrelemesini bildirir.

Bu işaret yalnızca --experimental_action_listener işaretiyle birlikte kullanılabilir.

Varsayılan olarak, oluşturmak için istenen hedeflerin geçişli olarak kapatılmasındaki tüm extra_actions yürütme için planlanır. --experimental_extra_action_filter, planlamayı sahibin etiketinin belirtilen normal ifadeyle eşleştiği extra_actions ile kısıtlar.

Aşağıdaki örnekte, extra_actions planlaması yalnızca sahibin etiketinde "/bar/" bulunan işlemler için geçerli olacak şekilde sınırlanmıştır:

% bazel build --experimental_action_listener=//test:al //foo/... \
  --experimental_extra_action_filter=.*/bar/.*

--host_cpu=cpu

Bu seçenek, ana makine araçları oluşturmak için kullanılması gereken CPU mimarisinin adını belirtir.

--fat_apk_cpu=cpu[,cpu]*

android_binary kuralının geçişli deps içinde C/C++ kitaplıkları derlenecek CPU'lar. Diğer C/C++ kuralları etkilenmez. Örneğin, cc_library, bir android_binary kuralının geçişli deps bölümünde görünürse ve cc_binary kuralının içinde yer alıyorsa cc_library, en az iki kez oluşturulur: android_binary kuralı için --fat_apk_cpu ile belirtilen her CPU için bir kez ve cc_binary kuralı için --cpu ile belirtilen CPU için bir kez.

Varsayılan değer: armeabi-v7a.

--fat_apk_cpu ile belirtilen her CPU için bir .so dosyası oluşturulur ve APK'da paketlenir. .so dosyasının adı, android_binary kuralının adının önüne "lib" ekler. Örneğin, android_binary öğesinin adı "foo" ise dosya libfoo.so olur.

--per_file_copt=[+-]regex[,[+-]regex]...@option[,option]...

Mevcut olduğunda, dahil etme normal ifade ifadelerinden biriyle eşleşen ve hariç tutma ifadelerinin hiçbiriyle eşleşmeyen bir etikete veya yürütme yoluna sahip tüm C++ dosyaları, verilen seçeneklerle oluşturulur. Etiket eşleştirme işleminde etiketin standart biçimi kullanılır (ör. //package:label_name).

Yürütme yolu, C++ dosyasının temel adı (uzantı dahil) dahil olmak üzere çalışma alanı dizininizin göreli yoludur. Platforma bağlı tüm ön ekleri de içerir.

Oluşturulan dosyaları (genrule çıkışları gibi) eşleştirmek için Bazel yalnızca yürütme yolunu kullanabilir. Bu durumda, hiçbir yürütme yoluyla eşleşmediği için normal ifadenin "//" ile başlamaması gerekir. Paket adları aşağıdaki gibi kullanılabilir: --per_file_copt=base/.*\.pb\.cc@-g0. Bu işlem, base adlı dizin altındaki her .pb.cc dosyasıyla eşleşir.

Bu seçenek birden çok kez kullanılabilir.

Bu seçenek, kullanılan derleme modundan bağımsız olarak uygulanır. Örneğin, --compilation_mode=opt ile derleme yapabilir ve daha güçlü optimizasyon açık veya optimizasyon devre dışıyken bazı dosyaları seçerek derleyebilirsiniz.

Uyarı: Bazı dosyalar hata ayıklama sembolleriyle seçici olarak derlenirse bağlantı oluşturma sırasında semboller kaldırılabilir. Bu durum, --strip=never ayarlanarak önlenebilir.

Söz dizimi: [+-]regex[,[+-]regex]...@option[,option]... Burada regex, dahil etme kalıplarını tanımlamak için + ve hariç tutma kalıplarını tanımlamak için - ile ön ek getirilebilecek normal bir ifadeyi temsil eder. option, C++ derleyicisine geçirilen rastgele bir seçeneği ifade eder. Bir seçenek, , içeriyorsa \, gibi alıntılanmalıdır. Normal ifadeleri seçeneklerden ayırmak için yalnızca ilk @ kullanıldığından seçenekler de @ içerebilir.

Örnek: --per_file_copt=//foo:.*\.cc,-//foo:file\.cc@-O0,-fprofile-arcs file.cc dışında //foo/ içindeki tüm .cc dosyaları için C++ derleyicisinin komut satırına -O0 ve -fprofile-arcs seçeneklerini ekler.

--dynamic_mode=mode

C++ ikili programlarının, derleme kurallarındaki linkstatic özelliği ile etkileşime geçerek dinamik olarak bağlanıp bağlanmayacağını belirler.

Modlar:

  • auto: Platforma bağlı moda çevirir; linux için default ve cygwin için off.
  • default: Bazel'ın dinamik olarak bağlanıp bağlanmayacağını seçmesine izin verir. Daha fazla bilgi için linkstatic adresini inceleyin.
  • fully: Tüm hedefleri dinamik olarak bağlar. Bu, bağlantı süresini kısaltır ve ortaya çıkan ikili programların boyutunu azaltır.
  • off: Tüm hedefleri çoğunlukla statik modda bağlar. -static, linkopts özelliğinde ayarlanırsa hedefler tamamen statik olarak değişir.

--fission (yes|no|[dbg][,opt][,fastbuild])

C++ hata ayıklama bilgilerini .o dosyaları yerine özel .dwo dosyalarına yazan Fission'ı etkinleştirir. Bu özellik, bağlantıların giriş boyutunu önemli ölçüde azaltır ve bağlantı sürelerini kısaltabilir.

[dbg][,opt][,fastbuild] olarak ayarlandığında (örnek: --fission=dbg,fastbuild) Fission yalnızca belirtilen derleme modları grubu için etkinleştirilir. Bu, Bazelrc ayarları için kullanışlıdır. yes olarak ayarlandığında Fission evrensel olarak etkinleştirilir. no olarak ayarlandığında Fisyon evrensel olarak devre dışı bırakılır. no varsayılandır.

--force_ignore_dash_static

Bu işaret ayarlanırsa cc_* kural DERLEME dosyasının bağlantılarındaki -static seçenekleri yoksayılır. Bu yalnızca C++ sağlamlaştırma derlemeleri için geçici bir çözüm olarak tasarlanmıştır.

--[no]force_pic

Etkinleştirilirse tüm C++ derlemeleri konumdan bağımsız kod ("-fPIC") üretir, bağlantılar PIC olmayan kitaplıklar yerine PIC önceden oluşturulmuş kitaplıkları tercih eder ve bağlantılar konumdan bağımsız yürütülebilir dosyalar ("-pie") oluşturur. Varsayılan ayar devre dışıdır.

--android_resource_shrinking

Android_binary kuralları için kaynak daraltma işleminin yapılıp yapılmayacağını seçer. Android_binary kurallarında shrink_resources özelliği için varsayılan değeri ayarlar. Daha fazla bilgi için bu kuralın dokümanlarına bakın. Varsayılan olarak kapalı değerine ayarlanır.

--custom_malloc=malloc-library-target

Belirtildiğinde, varsayılanı kullanan hedefler dahil olmak üzere (herhangi bir malloc belirtmeden) tüm malloc="target" özelliklerini geçersiz kılarak her zaman belirtilen Malloc uygulamasını kullanın.

--crosstool_top=label

Bu seçenek, bir derleme sırasında tüm C++ derlemesi için kullanılacak çapraz araçlar derleyici paketinin konumunu belirtir. Bazel bu konumda bir CROSSTOOL dosyası arar ve bunu --compiler ayarlarını otomatik olarak belirlemek için kullanır.

--host_crosstool_top=label

Belirtilmezse Bazel, ana makine yapılandırmasında kodu derlemek için (örneğin, derleme sırasında çalıştırılan araçlar) --crosstool_top değerini kullanır. Bu işaretin temel amacı, çapraz derlemeyi mümkün kılmaktır.

--apple_crosstool_top=label

objc*, ios* ve apple* kurallarının geçişli deps kısmında C/C++ kurallarını derlemek için kullanılacak çapraz araç. Söz konusu hedefler için bu işaret --crosstool_top öğesinin üzerine yazılır.

--android_crosstool_top=label

android_binary kurallarının geçişli deps öğesinde C/C++ kurallarını derlemek için kullanılacak çapraz araç. Bu, oluşturmadaki diğer hedefler için farklı bir araçlar gerekiyorsa yararlı olur. Varsayılan değer, WORKSPACE dosyasında android_ndk_repository kuralı tarafından oluşturulan çapraz aracı kullanmaktır. Ayrıca bkz. --fat_apk_cpu.

--compiler=version

Bu seçenek, derleme sırasında ikili programların derlemesi için kullanılacak C/C++ derleyici sürümünü (ör. gcc-4.1.0) belirtir. Özel bir çapraz araçla geliştirme yapmak istiyorsanız bu işareti belirtmek yerine bir CROSSTOOL dosyası kullanmanız gerekir.

--android_sdk=label

Bu seçenek, Android ile ilgili herhangi bir kuralı oluşturmak için kullanılacak Android SDK/platform araç zincirini ve Android çalışma zamanı kitaplığını belirtir.

WORKSPACE dosyasında bir android_sdk_repository kuralı tanımlanırsa Android SDK otomatik olarak seçilir.

--java_toolchain=label

Bu seçenek, Java kaynak dosyalarını derlemek için kullanılan java_toolchain etiketini belirtir.

--host_java_toolchain=label

Belirtilmezse Bazel, ana makine yapılandırmasında kodu derlemek için (örneğin, derleme sırasında çalıştırılan araçlar için) --java_toolchain değerini kullanır. Bu işaretin temel amacı, çapraz derlemeyi mümkün kılmaktır.

--javabase=(label)

Bu seçenek, temel Java yüklemesinin etiketini bazel çalıştırma, bazel testi ve java_binary ile java_test kuralları tarafından oluşturulan Java ikili programları için kullanılacak şekilde ayarlar. JAVABASE ve JAVA "Yap" değişkenleri bu seçenekten türetilir.

--host_javabase=label

Bu seçenek, ana makine yapılandırmasında kullanılacak temel Java yüklemesinin (örneğin, JavaBuilder ve Singlejar gibi ana makine derleme araçları) etiketini ayarlar.

Bu komut, Java kaynak dosyalarını derlemek için kullanılan Java derleyicisini seçmez. Derleyici, --java_toolchain seçeneğinin ayarları yapılarak seçilebilir.

Yürütme stratejisi

Bu seçenekler Bazel'ın derlemeyi nasıl yürüteceğini etkiler. Derlemenin oluşturduğu çıkış dosyaları üzerinde önemli bir etkisi olmamalıdır. Tipik olarak bunların ana etkisi, derlemenin hızıdır.

--spawn_strategy=strategy

Bu seçenek, komutların nerede ve nasıl yürütüleceğini kontrol eder.

  • standalone, komutların yerel alt işlemler olarak yürütülmesine neden olur. Bu değer kullanımdan kaldırılmıştır. Lütfen bunun yerine local sütununu kullanın.
  • sandboxed, komutların yerel makinedeki bir korumalı alan içinde yürütülmesine neden olur. Bu durum tüm giriş dosyalarının, veri bağımlılıklarının ve araçların srcs, data ve tools özelliklerinde doğrudan bağımlılık olarak listelenmesini gerektirir. Bazel, korumalı alana alınmış yürütmeyi destekleyen sistemlerde yerel korumalı alanı varsayılan olarak etkinleştirir.
  • local, komutların yerel alt işlemler olarak yürütülmesine neden olur.
  • worker, varsa komutların kalıcı çalışan kullanılarak yürütülmesine neden olur.
  • docker, komutların yerel makinedeki bir docker korumalı alanı içinde yürütülmesine neden olur. Bunun için docker'ın yüklü olması gerekir.
  • remote, komutların uzaktan yürütülmesine neden olur. Bu yalnızca bir uzaktan yürütücü ayrı olarak yapılandırılmışsa kullanılabilir.

--strategy mnemonic=strategy

Bu seçenek, komutların nerede ve nasıl yürütüleceğini kontrol ederek --spawn_strategy (ve hatırlatıcı türünde --genrule_strategy) anımsatıcı temelinde geçersiz kılınır. Desteklenen stratejiler ve etkileri için --spawn_strategy sayfasını inceleyin.

--strategy_regexp=<filter,filter,...>=<strategy>

Bu seçenek, açıklamaları belirli bir regex_filter ile eşleşen komutları yürütmek için hangi stratejinin kullanılması gerektiğini belirtir. regex_filter eşleştirmeyle ilgili ayrıntılar için --per_file_copt adresine bakabilirsiniz. Desteklenen stratejiler ve etkileri için --spawn_strategy sayfasını inceleyin.

Açıklamayla eşleşen son regex_filter kullanılır. Bu seçenek, strateji belirten diğer işaretleri geçersiz kılar.

  • Örnek: --strategy_regexp=//foo.*\\.cc,-//foo/bar=local, açıklamaları //foo.*.cc ile eşleşiyor ancak //foo/bar ile eşleşmiyorsa local stratejisini kullanarak işlem çalıştırmak anlamına gelir.
  • Örnek: --strategy_regexp='Compiling.*/bar=local' --strategy_regexp=Compiling=sandboxed, sandboxed stratejisiyle "//foo/bar/baz" derleniyor, ancak sıra tersine çevrildiğinde local ile çalıştırılıyor.
  • Örnek: --strategy_regexp='Compiling.*/bar=local,sandboxed', local stratejisiyle "//foo/bar/baz" derleniyor ve başarısız olursa sandboxed değerine geri dönüyor.

--genrule_strategy=strategy

Bu, --strategy=Genrule=strategy için kullanımdan kaldırılmış bir kısaltmadır.

--jobs=n (-j)

Tam sayı bağımsız değişkeni alan bu seçenek, derlemenin yürütme aşamasında eşzamanlı olarak yürütülmesi gereken iş sayısı için bir sınır belirtir.

--progress_report_interval=n

Bazel, henüz tamamlanmamış işlerle (ör. uzun süreli testler) ilgili düzenli aralıklarla bir ilerleme raporu yazdırır. Bu seçenek, raporlama sıklığını ayarlar ve ilerleme durumu n saniyede bir yazdırılır.

Varsayılan değer 0'dır. Bu da artımlı bir algoritma anlamına gelir: İlk rapor 10 saniye sonra yazdırılır, 30 saniye sonra ve bu ilerleme durumu dakikada bir kez raporlanır.

Bazel, --curses tarafından belirtildiği gibi imleç kontrolünü kullanırken ilerleme durumu saniyede bir raporlanır.

--local_{ram,cpu}_resources resources or resource expression

Bu seçenekler, Bazel'ın derleme ve test etkinliklerini yerel olarak çalışacak şekilde planlarken dikkate alabileceği yerel kaynak miktarını (MB cinsinden RAM ve CPU mantıksal çekirdek sayısı) belirtir. Bunlar bir tam sayı veya isteğe bağlı olarak bir anahtar kelime (HOST_RAM veya HOST_CPUS) ve ardından [-|*kayan öğe] alır (örneğin, --local_cpu_resources=2, --local_ram_resources=HOST_RAM*.5, --local_cpu_resources=HOST_CPUS-1). İşaretler bağımsızdır; biri veya her ikisi de ayarlanabilir. Varsayılan olarak Bazel, RAM miktarını ve CPU çekirdeği sayısını doğrudan yerel sistemin yapılandırmasından tahmin eder.

Varsayılan olarak etkinleştirilen bu seçenek, testler ve ikili programlar için runfiles sembollerinin çıkış dizininde derlenip derlenmeyeceğini belirtir. --nobuild_runfile_links kullanımı, tüm hedeflerin derlenip derlendiğini ve runfiles ağaçlarını oluşturmak için ek yük gerektirmeden derlendiğini doğrulamak açısından faydalı olabilir.

Testler (veya uygulamalar) yürütüldüğünde, çalışma zamanındaki veri bağımlılıkları tek bir yerde toplanır. Bazel'in çıkış ağacında, bu "çalışan dosyalar" ağacı genellikle karşılık gelen ikili programın veya testin kardeşi olarak köklenir. Test yürütme sırasında çalıştırma dosyalarına $TEST_SRCDIR/workspace/packagename/filename biçimindeki yollar kullanılarak erişilebilir. Runfiles ağacı, testlerin bildirilmiş bağımlılığı olan tüm dosyalara erişebilmesini ve daha fazlasını kapsamamasını sağlar. Varsayılan olarak çalıştırma dosyaları ağacı, gerekli dosyalara bir dizi sembolik bağlantı derlenerek uygulanır. Bağlantı grubu büyüdükçe bu işlemin maliyeti de artar. Ayrıca, bazı büyük derlemeler için genel derleme süresine önemli ölçüde katkıda bulunabilir. Bunun nedeni, özellikle her bağımsız testin (veya uygulamanın) kendi runfiles ağacını gerektirmesidir.

--[no]build_runfile_manifests

Varsayılan olarak etkinleştirilen bu seçenek, runfiles manifestlerinin çıkış ağacına yazılıp yazılmayacağını belirtir. Devre dışı bırakılması --nobuild_runfile_links anlamına gelir.

Runfiles ağaçları bellek içi manifestlerden uzaktan oluşturulacağından testler uzaktan yürütülürken bu kod devre dışı bırakılabilir.

--[no]discard_analysis_cache

Bu seçenek etkinleştirildiğinde Bazel, yürütme başlamadan hemen önce analiz önbelleğini siler ve böylece yürütme aşaması için ek bellek (yaklaşık %10) boşaltır. Dezavantajı, daha sonraki artımlı derlemelerin daha yavaş olmasıdır. Ayrıca bellek tasarrufu modu konusuna da bakın.

--[no]keep_going (-bin)

GNU Make'de olduğu gibi, ilk hatayla karşılaşıldığında derlemenin yürütme aşaması durur. Bazen hatalar karşısında bile mümkün olduğunca çok geliştirme yapmaya çalışmak faydalı olur. Bu seçenek bu davranışı etkinleştirir ve belirtildiğinde, derleme, ön koşulları başarıyla oluşturulmuş her hedefi oluşturmaya çalışır ancak hataları yok sayar.

Bu seçenek genellikle bir derlemenin yürütme aşamasıyla ilişkilendirilir ancak analiz aşamasını da etkiler: Derleme komutunda birkaç hedef belirtilmişse ancak bunlardan yalnızca bazıları başarıyla analiz edilebiliyorsa derleme bir hatayla durur. --keep_going belirtilmezse derleme bir hatayla durur. Bu durumda derleme, yürütme aşamasına geçer ancak yalnızca başarıyla analiz edilen hedefler için devam eder.

--[no]use_ijars

Bu seçenek, java_library hedeflerinin Bazel tarafından derleme şeklini değiştirir. Bazel, bağımlı java_library hedeflerini derlemek için bir java_library çıktısını kullanmak yerine, yalnızca özel olmayan üyelerin (herkese açık, korumalı ve varsayılan (paket) erişim yöntemleri ve alanları) imzalarını içeren arayüz jar'ları oluşturur ve bağımlı hedefleri derlemek için arayüz jar'larını kullanır. Bu da yalnızca yöntem gövdelerinde veya bir sınıfın özel üyelerinde değişiklik yapıldığında yeniden derlemenin önlenmesine olanak tanır.

--[no]interface_shared_objects

Bu seçenek, ikili programların ve diğer paylaşılan kitaplıkların, uygulaması yerine paylaşılan bir nesnenin arayüzüne bağımlı olmasını sağlayan paylaşılan nesnelerin arayüzü özelliğini etkinleştirir. Yalnızca uygulama değişiklikleri yapıldığında Bazel, değiştirilen paylaşılan kitaplığa bağlı olan hedefleri gereksiz bir şekilde yeniden oluşturmaktan kaçınabilir.

Çıkış seçimi

Bu seçenekler neyin derleneceğini veya test edileceğini belirler.

--[no]build

Bu seçenek, derlemenin yürütme aşamasının gerçekleşmesine neden olur; varsayılan olarak etkindir. Kapatıldığında yürütme aşaması atlanır ve yalnızca ilk iki aşama (yükleme ve analiz) gerçekleşir.

Bu seçenek, gerçekten herhangi bir şey derlemeden DERLEME dosyalarını doğrulamak ve girişlerdeki hataları tespit etmek için yararlı olabilir.

--[no]build_tests_only

Belirtilirse Bazel yalnızca boyut, zaman aşımı, etiket veya dil nedeniyle filtrelenmemiş *_test ve test_suite kurallarını çalıştırmak için gerekenleri oluşturur. Belirtilirse Bazel, komut satırında belirtilen diğer hedefleri yoksayar. Varsayılan olarak bu seçenek devre dışıdır ve Bazel, teste dahil edilmeyen *_test ve test_suite kuralları dahil olmak üzere istenen her şeyi oluşturur. bazel test --build_tests_only foo/... işlevinin çalıştırılması foo ağacındaki tüm derleme hatalarını algılayamayabileceği için bu faydalı bir özelliktir.

--[no]check_up_to_date

Bu seçenek, Bazel'ın bir derleme gerçekleştirmemesine, yalnızca belirtilen tüm hedeflerin güncel olup olmadığını kontrol etmesine neden olur. Bu durumda derleme her zamanki gibi başarıyla tamamlanır. Bununla birlikte, herhangi bir dosya oluşturulmak yerine güncel değilse bir hata bildirilir ve derleme başarısız olur. Bu seçenek, derleme maliyetine neden olmadan bir derlemenin kaynak düzenlemesinden daha yakın zamanda gerçekleştirilip gerçekleştirilmediğini (örneğin, gönderim öncesi kontroller için) belirlemek açısından yararlı olabilir.

Ayrıca bkz. --check_tests_up_to_date.

--[no]compile_one_dependency

Bağımsız değişken dosyalarının tek bir bağımlılığını derleyin. Bu, örneğin, hataları düzenleme/derleme/test döngüsünde mümkün olduğunca erken tespit etmek için kaynak dosyaya bağlı tek bir hedefi yeniden oluşturarak IDE'lerdeki kaynak dosyaların söz dizimini kontrol ederken faydalıdır. Bu bağımsız değişken, işaret olmayan tüm bağımsız değişkenlerin yorumlanma şeklini etkiler: Her bağımsız değişken, geçerli çalışan dizine göre bir dosya hedefi etiketi veya düz dosya adı olmalı ve her bir kaynak dosya adına bağlı bir kural oluşturulmalıdır. (Hedef müşteri) için

Aynı dil alanındaki kurallar tercihen C++ ve Java kaynakları tarafından seçilir. Aynı tercihe sahip birden çok kural için, DERLEME dosyasında ilk sırada görünen kural seçilir. Bir kaynak dosyaya başvurmayan, açık şekilde adlandırılmış bir hedef kalıbı hatayla sonuçlanır.

--save_temps

--save_temps seçeneği, derleyiciden geçici çıkışların kaydedilmesine neden olur. Bunlar arasında .s dosyaları (derleyici kodu), .i (önceden işlenmiş C) ve .ii (önceden işlenmiş C++) dosyaları bulunur. Bu çıkışlar genellikle hata ayıklama için kullanışlıdır. Geçici değerler yalnızca komut satırında belirtilen hedef grubu için oluşturulur.

--save_temps işareti şu anda yalnızca cc_* kuralları için kullanılabilmektedir.

Bazel'ın ek çıkış dosyalarının konumunu yazdırdığından emin olmak için --show_result n ayarınızın yeterince yüksek olduğundan emin olun.

--build_tag_filters=tag[,tag]*

Belirtilirse Bazel yalnızca en az bir gerekli etikete sahip (bunlardan herhangi biri belirtilirse) ve hariç tutulan etiketleri olmayan hedefler oluşturur. Derleme etiketi filtresi, virgülle ayrılmış etiket anahtar kelimeleri listesi olarak belirtilir ve isteğe bağlı olarak önüne hariç tutulan etiketleri belirtmek için "-" işareti eklenir. Gerekli etiketlerin önünde "+" işareti de olabilir.

Test çalıştırırken Bazel, bu filtreyle eşleşmeseler bile oluşturulup çalıştırılan test hedefleri için --build_tag_filters parametresini yoksayar. Bunları oluşturmaktan kaçınmak için test hedeflerini --test_tag_filters kullanarak filtreleyin veya açıkça hariç tutun.

--test_size_filters=size[,size]*

Belirtilirse Bazel yalnızca belirtilen boyuttaki hedefleri test eder (veya --build_tests_only belirtilmişse oluşturur). Test boyutu filtresi, izin verilen test boyutu değerlerinin (küçük, orta, büyük veya çok büyük) virgülle ayrılmış listesi olarak belirtilir. İsteğe bağlı olarak öncesinde, hariç tutulan test boyutlarını belirtmek için kullanılan "-" işareti bulunur. Örneğin,

  % bazel test --test_size_filters=small,medium //foo:all
ve
  % bazel test --test_size_filters=-large,-enormous //foo:all

//foo içindeki küçük ve orta testleri test eder.

Varsayılan olarak, test boyutu filtrelemesi uygulanmaz.

--test_timeout_filters=timeout[,timeout]*

Belirtilirse Bazel, yalnızca belirtilen zaman aşımına sahip hedefleri test eder (veya --build_tests_only belirtilmişse oluşturur). Test zaman aşımı filtresi, izin verilen test zaman aşımı değerlerinin (kısa, orta, uzun veya kalıcı) virgülle ayrılmış listesi olarak belirtilir. Bu listeye isteğe bağlı olarak, hariç tutulan test zaman aşımlarını belirtmek için "-" işareti eklenir. Örnek söz dizimi için --test_size_filters öğesine bakın.

Varsayılan olarak, test zaman aşımı filtrelemesi uygulanmaz.

--test_tag_filters=tag[,tag]*

Belirtilirse Bazel yalnızca en az bir gerekli etikete sahip (bunlardan biri belirtilirse) ve hariç tutulan etikete sahip olmayan hedefleri test eder (veya --build_tests_only belirtilmişse oluşturur). Test etiketi filtresi, virgülle ayrılmış etiket anahtar kelimeleri listesi olarak belirtilir ve isteğe bağlı olarak önüne hariç tutulan etiketleri belirtmek için "-" işareti eklenir. Gerekli etiketlerin önünde "+" işareti de olabilir.

Örneğin,

  % bazel test --test_tag_filters=performance,stress,-flaky //myproject:all

performance veya stress etiketiyle etiketlenmiş olan ancak flaky etiketiyle etiketlenmemiş hedefleri test eder.

Varsayılan olarak, test etiketi filtrelemesi uygulanmaz. Bu şekilde testin size ve local etiketlerini de filtreleyebileceğinizi unutmayın.

--test_lang_filters=lang[,lang]*

Resmi bir *_test kuralıyla diller için test dillerinin virgülle ayrılmış listesini belirtir (bunların tam listesi için ansiklopedi oluşturma bölümüne bakın). Hariç tutulan dilleri belirtmek için her dilin önüne isteğe bağlı olarak "-" eklenebilir. Her dil için kullanılan ad, *_test kuralındaki dil önekiyle aynı olmalıdır. Örneğin, cc, java veya sh.

Belirtilirse Bazel yalnızca belirtilen dillerdeki hedefleri test eder (veya --build_tests_only de belirtilirse oluşturur).

Örneğin,

  % bazel test --test_lang_filters=cc,java foo/...

foo/... için yalnızca C/C++ ve Java testlerini (sırasıyla cc_test ve java_test kuralları kullanılarak tanımlanır) test ederken,

  % bazel test --test_lang_filters=-sh,-java foo/...

foo/... içindeki sh_test ve java_test testleri hariç tüm testleri çalıştıracak.

Varsayılan olarak, test dil filtrelemesi uygulanmaz.

--test_filter=filter-expression

Test çalıştırıcının, çalıştırılacak testlerin bir alt kümesini seçmek için kullanabileceği bir filtreyi belirtir. Çağrıda belirtilen tüm hedefler derlenir ancak ifadeye bağlı olarak bunlardan yalnızca bazıları yürütülebilir; bazı durumlarda yalnızca belirli test yöntemleri çalıştırılır.

filter-expression işlevinin nasıl yorumlanması, testi çalıştırmaktan sorumlu test çerçevesine bağlıdır. Bu bir glob, alt dize veya regexp olabilir. --test_filter, farklı --test_arg filtre bağımsız değişkenlerinin aktarılması açısından kullanışlı bir çözümdür ancak tüm çerçeveler bunu desteklemez.

Ayrıntı düzeyi

Bu seçenekler, terminale veya ek günlük dosyalarına Bazel çıktısının ayrıntı düzeyini kontrol eder.

--explain=logfile

Dosya adı bağımsız değişkeni gerektiren bu seçenek, bazel build yürütme aşamasında bağımlılık denetleyicinin her derleme adımı için neden yürütüldüğünü veya güncel olduğunu açıklamasını sağlar. Açıklama logfile dosyasına yazılır.

Beklenmedik yeniden oluşturma işlemleriyle karşılaşıyorsanız bu seçenek, sorunun nedenini anlamanıza yardımcı olabilir. Sonraki tüm derlemelerde günlük kaydı yapılabilmesi için bunu .bazelrc öğenize ekleyin ve beklenmedik şekilde yürütülmüş bir yürütme adımı gördüğünüzde günlüğü inceleyin. Bu seçenekte küçük bir performans cezası olabileceğinden, artık gerekli olmadığında bu seçeneği kaldırmak isteyebilirsiniz.

--verbose_explanations

Bu seçenek, --explain seçeneği etkinleştirildiğinde oluşturulan açıklamaların ayrıntı düzeyini artırır.

Özellikle, ayrıntılı açıklamalar etkinleştirilirse ve bir çıkış dosyası, dosyayı oluşturmak için kullanılan komut değiştiği için yeniden oluşturulursa açıklama dosyasındaki çıktı, yeni komutun tüm ayrıntılarını içerir (en azından çoğu komut için).

Bu seçeneği kullanmak, oluşturulan açıklama dosyasının uzunluğunu ve --explain kullanmanın performans cezasını önemli ölçüde artırabilir.

--explain etkinleştirilmemişse --verbose_explanations herhangi bir etki göstermez.

--profile=file

Bir dosya adı bağımsız değişkenini alan bu seçenek, Bazel'in bir dosyaya profil çıkarma verilerini yazmasına neden olur. Daha sonra veriler bazel analyze-profile komutu kullanılarak analiz edilebilir veya ayrıştırılabilir. Derleme profili, Bazel'ın build komutunun nerede vakit geçirdiğini anlamak açısından faydalı olabilir.

--[no]show_loading_progress

Bu seçenek, Bazel'ın paket yükleme ilerleme durumu mesajlarını çıkarmasına neden olur. Politika devre dışı bırakılırsa mesajlar gösterilmez.

--[no]show_progress

Bu seçenek, ilerleme mesajlarının görüntülenmesine neden olur; varsayılan olarak açıktır. Devre dışı bırakıldığında ilerleme mesajları gizlenir.

--show_progress_rate_limit=n

Bu seçenek, Bazel'ın n saniyede en fazla bir ilerleme mesajı göstermesine neden olur. Burada n, gerçek bir sayıdır. Bu seçenek için varsayılan değer 0,02'dir. Yani Bazel, ilerleme mesajlarını her 0,02 saniyede bir gösterilecek şekilde sınırlandırır.

--show_result=n

Bu seçenek, bazel build komutunun sonundaki sonuç bilgilerinin yazdırılmasını kontrol eder. Varsayılan olarak, tek bir derleme hedefi belirtilmişse Bazel, hedefin başarıyla güncellenip güncellenmediğini ve gerekiyorsa hedefin oluşturduğu çıkış dosyalarının listesini belirten bir mesaj yazdırır. Birden çok hedef belirtilirse sonuç bilgileri gösterilmez.

Sonuç bilgileri, tek bir veya birkaç hedeften oluşan derlemeler için kullanışlı olsa da büyük derlemelerde (üst düzey proje ağacının tamamı gibi) bu bilgiler yorucu ve dikkat dağıtıcı olabilir. Bu seçenek kontrol edilmesine olanak tanır. --show_result, tam sonuç bilgilerinin yazdırılması gereken maksimum hedef sayısı olan bir tam sayı bağımsız değişkeni alır. Varsayılan olarak bu değer 1'dir. Bu eşiğin üzerinde, tek tek hedefler için hiçbir sonuç bilgisi gösterilmez. Bu nedenle, sıfır değeri sonuç bilgilerinin her zaman atlanmasına neden olur ve çok büyük bir değer sonucun her zaman yazdırılmasına neden olur.

Kullanıcılar, düzenli olarak küçük bir hedef grubu oluşturma (örneğin, derleme-düzenleme testi döngüsü sırasında) ve büyük bir hedef grubu oluşturma (örneğin, yeni bir çalışma alanı oluşturma veya regresyon testleri çalıştırma) arasında bir değer seçmek isteyebilir. İlk durumda sonuç bilgisi çok kullanışlı olurken, ikinci örnekte daha az faydalıdır. Tüm seçeneklerde olduğu gibi, bu bilgi de .bazelrc dosyasıyla dolaylı olarak belirtilebilir.

Dosyalar, derlenen yürütülebilir dosyaların çalıştırılabilmesi için dosya adını kopyalayıp kabuğa yapıştırmayı kolaylaştıracak şekilde yazdırılır. Her bir hedef için "güncel" veya "başarısız" mesajları, bir yapı çalıştıran komut dosyaları tarafından kolayca ayrıştırılabilir.

--sandbox_debug

Bu seçenek, işlem gerçekleştirmek için korumalı alanı kullanırken Bazel'in ek hata ayıklama bilgileri yazdırmasına neden olur. Bu seçenek aynı zamanda korumalı alan dizinlerini korur. Böylece, yürütme sırasında yapılan işlemlere görünen dosyalar incelenebilir.

--subcommands (-s)

Bu seçenek, Bazel'in yürütme aşamasının her bir komut için, komut satırını çalıştırmadan önce tam komut satırını yazdırmasına neden olur.

  >>>>> # //examples/cpp:hello-world [action 'Linking examples/cpp/hello-world']
  (cd /home/johndoe/.cache/bazel/_bazel_johndoe/4c084335afceb392cfbe7c31afee3a9f/bazel && \
    exec env - \
    /usr/bin/gcc -o bazel-out/local-fastbuild/bin/examples/cpp/hello-world -B/usr/bin/ -Wl,-z,relro,-z,now -no-canonical-prefixes -pass-exit-codes -Wl,-S -Wl,@bazel-out/local_linux-fastbuild/bin/examples/cpp/hello-world-2.params)

Mümkün olduğunda, komutlar Bourne kabuğu uyumlu bir söz diziminde yazdırılır. Böylece, bu komutlar kolayca kopyalanıp kabuk komut istemine yapıştırılabilir. (Kabuğun çevresindeki parantezler, kabuğunuzu cd ve exec çağrılarından korumak için sağlanmıştır. Bunları kopyaladığınızdan emin olun.) Bununla birlikte, sembolik bağlantı ağaçları oluşturma gibi bazı komutlar Bazel içinde dahili olarak uygulanır. Bunlar için görüntülenecek komut satırı yoktur.

Komutun bağımsız değişkenlerini tek bir satır yerine liste olarak yazdırmak için --subcommands=pretty_print aktarılabilir. Bu, uzun komut satırlarının daha okunabilir olmasına yardımcı olabilir.

Ayrıca aşağıdaki --verbose_failures bölümüne de bakın.

Alt komutları araç dostu bir biçimde günlüğe kaydetmek için bkz. --execution_log_json_file ve --execution_log_binary_file.

--verbose_failures

Bu seçenek, Bazel'in yürütme aşamasının başarısız olan komutlar için tam komut satırını yazdırmasına neden olur. Bu yöntem, hatalı bir derlemeyi ayıklamak için çok yararlı olabilir.

Başarısız komutlar, kopyalama ve bir kabuk istemine yapıştırma işlemi için uygun olan Bourne kabuğu uyumlu bir söz diziminde yazdırılır.

Çalışma alanı durumu

Bazel tarafından oluşturulan ikili programları "damgalamak" için şu seçenekleri kullanın: Kaynak kontrol düzeltmesi veya çalışma alanıyla ilgili diğer bilgiler gibi ek bilgileri ikili programlara yerleştirmek için. Bu mekanizmayı, stamp özelliğini destekleyen genrule, cc_binary gibi kurallarla kullanabilirsiniz.

--workspace_status_command=program

Bu işaret, Bazel'ın her derlemeden önce çalıştıracağı bir ikili programı belirtmenizi sağlar. Program, çalışma alanının durumu hakkında geçerli kaynak kontrol düzeltmesi gibi bilgileri raporlayabilir.

İşaretin değeri, yerel programa giden bir yol olmalıdır. Linux/macOS'te bu dosya herhangi bir yürütülebilir dosya olabilir. Windows'da bu, yerel bir ikili program (genellikle ".exe", ".bat" veya ".cmd" dosyası) olmalıdır.

Program, sıfır veya daha fazla anahtar/değer çiftini standart çıkışa yazdırmalı ve her satırda bir giriş olmalı, ardından sıfır olarak çıkış yapmalıdır (aksi takdirde derleme başarısız olur). Anahtar adları herhangi bir ad olabilir, ancak sadece büyük harf ve alt çizgi içerebilir. Anahtar adından sonraki ilk boşluk, anahtarı değerden ayırır. Bu değer, satırın geri kalanıdır (ek boşluklar dahil). Ne anahtar ne de değer birden çok satırdan oluşabilir. Anahtarlar yinelenmemelidir.

Bazel, anahtarları iki gruba ayırır: "kararlı" ve "değişken". ("Kararlı" ve "değişken" adları biraz akıl karıştırıcı olduğu için bu adları çok düşünmeyin.)

Bu işlemin ardından Bazel, anahtar/değer çiftlerini iki dosyaya yazıyor:

  • bazel-out/stable-status.txt anahtar adının STABLE_ ile başladığı tüm anahtarları ve değerleri içerir
  • bazel-out/volatile-status.txt geri kalan anahtarları ve değerlerini içerir

Sözleşme:

  • "kararlı" anahtarların değerleri mümkünse nadiren değişmelidir. bazel-out/stable-status.txt içeriği değişirse Bazel bu içeriklere bağlı işlemleri geçersiz kılar. Başka bir deyişle, sabit bir anahtarın değeri değişirse Bazel damgalı işlemleri yeniden çalıştırır. Bu nedenle, kararlı durum, her zaman değiştiği ve Bazel'ın her derlemede damgalı işlemleri yeniden çalıştırmasına neden olacağı için zaman damgaları gibi öğeleri içermemelidir.

    Bazel her zaman aşağıdaki sabit anahtarları oluşturur:

    • BUILD_EMBED_LABEL: --embed_label değeri
    • BUILD_HOST: Bazel'ın çalıştığı ana makinenin adı
    • BUILD_USER: Bazel'ın çalıştırdığı kullanıcının adı
  • "değişken" anahtarların değerleri sık sık değişebilir. Bazel, zaman damgalarında olduğu gibi bunların sürekli değişmesini bekler ve bazel-out/volatile-status.txt dosyasını gerektiği gibi günceller. Bununla birlikte, damgalı işlemlerin her zaman yeniden çalıştırılmasını önlemek için Bazel, değişken dosyanın asla değişmediğini iddia eder. Bir başka deyişle, içeriği değişen tek dosya değişken durum dosyasıysa Bazel bu dosyaya bağlı işlemleri geçersiz kılmaz. İşlemlerin diğer girişleri değiştiyse Bazel bu işlemi tekrar çalıştırır ve işlem, güncellenen değişken durumu görür ancak yalnızca değişken durumun tek başına değişmesi işlemi geçersiz kılmaz.

    Bazel her zaman aşağıdaki değişken anahtarları oluşturur:

    • BUILD_TIMESTAMP: Unix Dönem'den beri derlemenin saniye cinsinden süresi (System.currentTimeMillis() değerinin bine bölümü)

Linux/macOS'te, çalışma alanı durumunu alma özelliğini devre dışı bırakmak için --workspace_status_command=/bin/true parametresini iletebilirsiniz. Bunun nedeni, true ürününün başarılı bir şekilde hiçbir şey yapmaması (sıfırla çıkış yapması) ve hiç çıkış yazdırmamasıdır. Windows'da, aynı etki için MSYS'nin true.exe yolunu geçirebilirsiniz.

Herhangi bir nedenle çalışma alanı durum komutu başarısız olursa (sıfır dışında bir şekilde çıkar) derleme başarısız olur.

Linux'ta Git kullanan örnek program:

#!/bin/bash
echo "CURRENT_TIME $(date +%s)"
echo "RANDOM_HASH $(cat /proc/sys/kernel/random/uuid)"
echo "STABLE_GIT_COMMIT $(git rev-parse HEAD)"
echo "STABLE_USER_NAME $USER"

Bu programın yolunu --workspace_status_command ile geçirin. Kararlı durum dosyası STABLE satırlarını, değişken durum dosyası ise diğer satırları içerir.

--[no]stamp

Bu seçenek, stamp kural özelliğiyle birlikte, derleme bilgilerinin ikili programlara yerleştirilip yerleştirilmeyeceğini kontrol eder.

Damgalama, stamp özelliği kullanılarak kural bazında açık bir şekilde etkinleştirilebilir veya devre dışı bırakılabilir. Ayrıntılar için lütfen Yapı Ansiklopedisi'ne bakın. Bir kural stamp = -1 (*_binary kuralları için varsayılan) ayarladığında bu seçenek, damgalamanın etkin olup olmadığını belirler.

Bazel, bu seçenek veya stamp özelliği ne olursa olsun ana makine yapılandırması için oluşturulan ikili programları hiçbir zaman damgalamaz. stamp = 0 belirleyen kurallarda (*_test kuralları için varsayılan ayar) damgalama, --[no]stamp ne olursa olsun devre dışı bırakılır. --stamp belirtilmesi, bağımlılıkları değişmediyse hedefleri yeniden oluşturulmaya zorlamaz.

Giriş dalgalanmasını azalttığı ve derlemenin önbelleğe alınmasını en üst düzeye çıkardığı için --nostamp politikasının ayarlanması genellikle derleme performansı açısından tercih edilir.

Platform

Derlemelerin çalışma şeklini yapılandıran ana makine ve hedef platformları kontrol etmek ve Bazel kurallarında kullanılabilen yürütme platformları ve araç zincirlerini kontrol etmek için bu seçenekleri kullanın.

Lütfen Platformlar ve Araç Zincirleri ile ilgili arka plan bilgilerine bakın.

--platforms=labels

Mevcut komut için hedef platformları açıklayan platform kurallarının etiketleri.

--host_platform=label

Ana makine sistemini açıklayan bir platform kuralının etiketi.

--extra_execution_platforms=labels

İşlem çalıştırmak için yürütme platformu olarak kullanılabilen platformlar. Platformlar, kesin hedefle veya hedef kalıbı olarak belirtilebilir. Bu platformlar, WORKSPACE dosyasında register_execution_platforms() işlevi tarafından tanımlanandan önce dikkate alınır.

--extra_toolchains=labels

Araç zinciri çözümü sırasında dikkate alınacak araç zinciri kuralları. Araç zincirleri, tam hedefe göre veya hedef kalıp olarak belirtilebilir. Bu araç zincirleri, WORKSPACE dosyasında register_toolchains() tarafından bildirilenlerden önce dikkate alınır.

--toolchain_resolution_debug=regex

Araç zinciri türü normal ifadeyle eşleşiyorsa araç zincirlerini bulurken hata ayıklama bilgilerini yazdırın. Birden fazla normal ifade virgülle ayrılabilir. Normal ifade, başta - kullanılarak değiştirilebilir. Bu, eksik araç zincirlerinden kaynaklanan hata ayıklama hataları konusunda Bazel veya Starlark kurallarının geliştiricilerine yardımcı olabilir.

Çeşitli

--flag_alias=alias_name=target_path

Daha uzun Starlark derleme ayarlarını daha kısa bir ada bağlamak için kullanılan kolaylık işareti. Daha fazla bilgi için Starlark Configurations bölümüne bakın.

Oluşturulan kolaylık sembollerinin ön ekini değiştirir. Sembolik bağlantı öneki için varsayılan değer bazel-'dir. Bu değer, bazel-bin, bazel-testlogs ve bazel-genfiles sembolik bağlantılarını oluşturur.

Sembolik bağlantılar herhangi bir nedenle oluşturulamazsa uyarı gönderilir ancak derleme yine de başarılı olarak kabul edilir. Bu, özellikle salt okunur bir dizinde veya yazma izninizin olmadığı bir dizinde derleme yapmanıza olanak tanır. Bir derlemenin sonunda bilgi mesajlarında yazdırılan tüm yollar, yalnızca sembolik bağlantılar beklenen konuma işaret ediyorsa sembolik bağlantıya göre kısa biçimi kullanır. Diğer bir deyişle, oluşturulan sembolik bağlantılara güvenemeseniz bile bu yolların doğruluğuna güvenebilirsiniz.

Bu seçeneğin yaygın olarak kullanılan değerlerinden bazıları şunlardır:

  • Sembolik bağlantı oluşturmayı engelle: --symlink_prefix=/, Bazel'ın bazel-out ve bazel-<workspace> sembolleri de dahil olmak üzere sembolik bağlantıları oluşturmamasına veya güncellememesine neden olur. Sembolik bağlantı oluşturulmasını tamamen gizlemek için bu seçeneği kullanın.

  • Karmaşıklığı azaltın: --symlink_prefix=.bazel/, Bazel'ın .bazel adlı gizli bir dizin içinde bin (vb.) adında sembolik bağlantılar oluşturmasına neden olur.

--platform_suffix=string

Çıkış dizinini belirlemek için kullanılan yapılandırma kısa adına bir sonek ekler. Bu seçeneğin farklı değerlere ayarlanması, dosyaları farklı dizinlere yerleştirir. Örneğin, birbirlerinin çıkış dosyalarının çökmesine neden olan derlemelerin önbellek isabet oranlarını iyileştirmek veya karşılaştırmalar için çıkış dosyalarını muhafaza etmek amacıyla bu seçenek kullanılır.

--default_visibility=(private|public)

Bazel varsayılan görünürlük değişikliklerini test etmek için geçici işaret. Genel kullanıma yönelik değildir ancak eksiksiz olması için belgelenmiştir.

--[no]use_action_cache

Bu seçenek varsayılan olarak etkindir. Devre dışı bırakılırsa Bazel, yerel işlem önbelleğini kullanmaz. Yerel işlem önbelleğinin devre dışı bırakılması temiz derlemeler için bellek ve disk alanından tasarruf sağlar ancak ek derlemeleri yavaşlatır.

--starlark_cpu_profile=_file_

Değeri dosya adı olan bu işaret, Bazel'ın tüm Starlark iş parçacıkları tarafından CPU kullanımıyla ilgili istatistikler toplamasına ve profili pprof biçiminde adlandırılmış dosyaya yazmasına neden olur.

Aşırı hesaplama nedeniyle yükleme ve analizi yavaşlatan Starlark işlevlerini belirlemenize yardımcı olması için bu seçeneği kullanın. Örneğin:

$ bazel build --nobuild --starlark_cpu_profile=/tmp/pprof.gz my/project/...
$ pprof /tmp/pprof.gz
(pprof) top
Type: CPU
Time: Feb 6, 2020 at 12:06pm (PST)
Duration: 5.26s, Total samples = 3.34s (63.55%)
Showing nodes accounting for 3.34s, 100% of 3.34s total
      flat  flat%   sum%        cum   cum%
     1.86s 55.69% 55.69%      1.86s 55.69%  sort_source_files
     1.02s 30.54% 86.23%      1.02s 30.54%  expand_all_combinations
     0.44s 13.17% 99.40%      0.44s 13.17%  range
     0.02s   0.6%   100%      3.34s   100%  sorted
         0     0%   100%      1.38s 41.32%  my/project/main/BUILD
         0     0%   100%      1.96s 58.68%  my/project/library.bzl
         0     0%   100%      3.34s   100%  main

Aynı verilerin farklı görünümleri için svg, web ve list pprof komutlarını deneyin.

Sürümler için Bazel kullanma

Bazel, hem geliştirme döngüsü sırasında yazılım mühendisleri tarafından hem de üretime dağıtıma yönelik ikili programları hazırlarken yayın mühendisleri tarafından kullanılır. Bu bölümde Bazel kullanan yayın mühendislerine yönelik ipuçlarının listesi yer almaktadır.

Önemli seçenekler

Sürüm derlemeleri için Bazel kullanıldığında, derleme yapan diğer komut dosyalarıyla aynı sorunlar ortaya çıkar. Daha fazla bilgi için Komut dosyalarından Bazel'ı arama bölümüne bakın. Özellikle aşağıdaki seçenekler önemle tavsiye edilir:

Şu seçenekler de önemlidir:

  • --package_path
  • --symlink_prefix: Birden fazla yapılandırmaya yönelik derlemeleri yönetmek için her derlemeyi "64 bit" ve "32 bit" gibi ayrı bir tanımlayıcıyla ayırt etmek yararlı olabilir. Bu seçenek, bazel-bin (vb.) sembolik bağlantılarını farklılaştırır.

Test çalıştırma

Bazel ile test oluşturmak ve çalıştırmak için bazel test yazın ve ardından test hedeflerinin adını yazın.

Varsayılan olarak bu komut, belirtilen tüm hedefleri (komut satırında belirtilen test dışı hedefler dahil) oluşturarak ve *_test ve test_suite hedeflerini ön koşulları karşılanır karşılamaz test ederek aynı anda derleme ve test etkinliği gerçekleştirir. Bu da test yürütmenin binaya müdahale ettiği anlamına gelir. Bu yaklaşım genellikle önemli hız kazanımları ile sonuçlanır.

bazel test için seçenekler

--cache_test_results=(yes|no|auto) (-t)

Bu seçenek "otomatik" (varsayılan) değerine ayarlanırsa Bazel yalnızca aşağıdaki koşullardan herhangi birinin geçerli olması durumunda testi yeniden çalıştırır:

  • Bazel, testteki veya bağımlılıklarındaki değişiklikleri algılar
  • test external olarak işaretlendi.
  • --runs_per_test ile birden fazla test çalıştırması istendi
  • test başarısız oldu.

"Hayır" ise tüm testler koşulsuz olarak yürütülür.

"Evet" yanıtı verilirse önbelleğe alma davranışı otomatik ile aynı olur ancak test hatalarını önbelleğe alabilir ve --runs_per_test ile test çalıştırmaları gerçekleştirebilir.

.bazelrc dosyalarında bu seçeneği varsayılan olarak etkinleştiren kullanıcılar, -t (açık) veya -t- (kapalı) kısaltmalarını, belirli bir çalıştırmada varsayılanı geçersiz kılmak için uygun bulabilir.

--check_tests_up_to_date

Bu seçenek, Bazel'a testleri çalıştırmamasını, yalnızca önbelleğe alınmış test sonuçlarını kontrol edip bildirmesini söyler. Önceden oluşturulup çalıştırılmamış veya test sonuçları güncel olmayan (örneğin, kaynak kodu ya da derleme seçenekleri değiştiği için) testler varsa Bazel bir hata mesajı ("test sonucu güncel değil") bildirir, testin durumunu "DURUM YOK" olarak kaydeder (renkli çıkış etkinleştirilmişse kırmızı renkte) ve kod döndürür.

Bu seçenek, [--check_up_to_date](#check-up-to-date) davranışını da ima eder.

Bu seçenek, yayın öncesi kontroller için yararlı olabilir.

--test_verbose_timeout_warnings

Bu seçenek, bir testin zaman aşımı testin gerçek yürütme süresinden önemli ölçüde daha uzun olursa Bazel'a kullanıcıyı açıkça uyarmasını bildirir. Bir testin zaman aşımının stabil olmayacak şekilde ayarlanması gerekirken, çok fazla cömert bir zaman aşımına sahip bir test, beklenmedik bir şekilde ortaya çıkan gerçek sorunları gizleyebilir.

Örneğin, normalde bir veya iki dakika içinde yürütülen bir testte, fazla cömert oldukları için ETERNAL veya LONG zaman aşımı olmamalıdır.

Bu seçenek, kullanıcıların iyi bir zaman aşımı değerine karar vermelerine veya mevcut zaman aşımı değerlerini kontrol etmelerine yardımcı olur.

--[no]test_keep_going

Varsayılan olarak, tüm testler tamamlanmak üzere çalıştırılır. Ancak bu işaret devre dışı bırakılırsa derleme, başarısız olmayan testlerde iptal edilir. Sonraki derleme adımları ve test çağrıları çalışmaz ve yayındaki çağrılar iptal edilir. Hem --notest_keep_going hem de --keep_going değerini belirtmeyin.

--flaky_test_attempts=attempts

Bu seçenek, herhangi bir nedenle başarısız olan bir testin maksimum kaç kez denenmesi gerektiğini belirtir. Başlangıçta başarısız olan ancak sonunda başarılı olan bir test, test özetinde FLAKY olarak raporlanır. Bununla birlikte, Bazel çıkış kodunun veya toplam geçilen test sayısının tanımlanması söz konusu olduğunda geçildiği kabul edilir. İzin verilen tüm denemelerin başarısız olduğu testler başarısız olarak kabul edilir.

Varsayılan olarak (bu seçenek belirtilmediğinde veya varsayılan olarak ayarlandığında), normal testler için yalnızca bir denemeye ve flaky özelliği ayarlanmış test kuralları için 3 denemeye izin verilir. Maksimum test denemesi sınırını geçersiz kılmak için bir tam sayı değeri belirtebilirsiniz. Bazel, sistemin kötüye kullanılmasını önlemek için en fazla 10 test girişimine izin verir.

--runs_per_test=[regex@]number

Bu seçenek, her bir testin kaç kez yürütülmesi gerektiğini belirtir. Tüm test yürütmeleri ayrı testler olarak ele alınır (yedek işlevler her birine bağımsız olarak uygulanır).

Başarısız çalıştırma içeren bir hedefin durumu, --runs_per_test_detects_flakes işaretinin değerine bağlıdır:

  • Aksi takdirde, başarısız çalıştırmalar tüm testin başarısız olmasına neden olur.
  • Varsa ve aynı parçadan iki tanesi çalıştırıldığında PASS (başarısız) ve FAIL (başarısız) değerini döndürürse test, güvenilir olmayan bir durum alır (başka başarısız çalıştırmalar da başarısız olmasına neden olmadığı sürece).

Tek bir sayı belirtilirse tüm testler o kadar çok kez çalıştırılır. Alternatif olarak, regex@number söz dizimi kullanılarak bir normal ifade belirtilebilir. Bu, --runs_per_test etkisini normal ifadeyle eşleşen hedeflerle sınırlar (--runs_per_test=^//pizza:.*@4, //pizza/ altındaki tüm testleri 4 kez çalıştırır). Bu --runs_per_test biçimi bir kereden fazla belirtilebilir.

--[no]runs_per_test_detects_flakes

Bu seçenek belirtilirse (varsayılan olarak seçili değildir) Bazel, --runs_per_test tarihine kadar stabil olmayan test parçalarını algılar. Bir veya daha fazla kırık hatası için çalışırsa ve bir ya da daha fazla aynı parça geçişi için çalışırsa hedef, bayrakla birlikte stabil olarak kabul edilir. Belirtilmemişse hedef, hata durumunu bildirir.

--test_summary=output_style

Test sonucu özetinin nasıl görüntülenmesi gerektiğini belirtir.

  • short, her testin sonuçlarını, test başarısız olursa test çıkışını içeren dosyanın adıyla birlikte yazdırır. Bu, varsayılan değerdir.
  • terse, short benzeri, ancak daha da kısa: yalnızca geçemeyen testlerle ilgili bilgileri yazdırın.
  • detailed yalnızca her testi değil, başarısız olan her bir test durumunu yazdırır. Test çıkışı dosyalarının adları atlanır.
  • none, test özetini yazdırmıyor.

--test_output=output_style

Test çıktısının nasıl görüntüleneceğini belirtir:

  • summary, her testin başarılı olup olmadığıyla ilgili bir özet gösterir. Ayrıca, başarısız testler için çıkış günlüğü dosyasının adını gösterir. Özet, derlemenin sonunda yazdırılır (Derleme sırasında testler başladığında, başarılı olduğunda veya başarısız olduğunda sadece basit ilerleme mesajları gösterilir). Bu, varsayılan davranıştır.
  • errors, başarısız testlerden birleşik stdout/stderr çıkışını yalnızca test tamamlandıktan hemen sonra stdout'a göndererek eş zamanlı testlerden elde edilen test çıkışının birbirine eklenmemesini sağlar. Derlemede yukarıdaki özet çıkışına göre bir özet yazdırır.
  • all, errors işlevine benzer ancak başarılı olanlar da dahil olmak üzere tüm testler için çıktıyı yazdırır.
  • streamed, her testten gerçek zamanlı olarak stdout/stderr çıkışı aktarır.

--java_debug

Bu seçenek, bir Java testinin Java sanal makinesinin, testi başlatmadan önce JDWP uyumlu bir hata ayıklayıcıdan bağlantı gelmesini beklemesine neden olur. Bu seçenek, --test_output=streamed anlamına gelir.

--[no]verbose_test_summary

Bu seçenek varsayılan olarak etkindir ve test sürelerinin ve diğer ek bilgilerin (test denemeleri gibi) test özetine yazdırılmasına neden olur. --noverbose_test_summary belirtilirse test özeti yalnızca test adını, test durumunu ve önbelleğe alınmış test göstergesini içerir ve mümkün olduğunda 80 karakter içinde kalacak şekilde biçimlendirilir.

--test_tmpdir=path

Yerel olarak yürütülen testler için geçici dizini belirtir. Her test, bu dizin içinde ayrı bir alt dizinde yürütülür. Dizin, her bazel test komutunun başında temizlenir. Bazel varsayılan olarak bu dizini Bazel çıktı temel dizininin altına yerleştirir.

--test_timeout=seconds VEYA --test_timeout=seconds,seconds,seconds,seconds

Belirtilen saniye sayısını yeni bir zaman aşımı değeri olarak kullanarak tüm testler için zaman aşımı değerini geçersiz kılar. Tek bir değer sağlanırsa tüm test zaman aşımı kategorileri için kullanılır.

Alternatif olarak kısa, orta, uzun ve sonsuz testler için (bu sırayla) ayrı zaman aşımları belirten, virgülle ayrılmış dört değer sağlanabilir. Her iki biçimde de, test boyutlarından herhangi biri için sıfır veya negatif bir değer, Test Yazma sayfasında tanımlandığı şekilde, belirtilen zaman aşımı kategorilerinin varsayılan zaman aşımı ile değiştirilir. Varsayılan olarak Bazel, zaman aşımı sınırını testin boyutundan boyutun örtülü veya açıkça ayarlanmış olmasından çıkartarak tüm testler için bu zaman aşımlarını kullanır.

Zaman aşımı kategorilerinin boyutlarından farklı olduğunu açıkça belirten testler, bu zaman aşımının boyut etiketi tarafından dolaylı olarak ayarlanmış olmasıyla aynı değeri alır. Dolayısıyla, "uzun" zaman aşımı belirten "küçük" boyutlu bir testte, açık bir zaman aşımı olmayan "büyük" testlerin sahip olduğu etkili zaman aşımı süresi aynı olacaktır.

--test_arg=arg

Her test işlemine komut satırı seçeneklerini/işaretlerini/bağımsız değişkenleri iletir. Bu seçenek, birkaç bağımsız değişken iletmek için birden fazla kez kullanılabilir. Örneğin, --test_arg=--logtostderr --test_arg=--v=3.

--test_env=variable=_value_ VEYA --test_env=variable

Her test için test ortamına eklenmesi gereken ek değişkenleri belirtir. value belirtilmezse bazel test komutunu başlatmak için kullanılan kabuk ortamından devralınır.

System.getenv("var") (Java), getenv("var") (C veya C++),

--run_under=command-prefix

Bu, test çalıştırıcısının çalıştırmadan önce test komutunun önüne yerleştireceği bir ön eki belirtir. command-prefix, Bourne kabuğu şifrelendirme kuralları kullanılarak kelimelere bölünür. Daha sonra, yürütülecek komutun başına kelime listesi eklenir.

İlk kelime tam nitelikli bir etiketse (// ile başlar) oluşturulur. Daha sonra etiket, diğer kelimelerle birlikte yürütülecek komutun başına eklenen karşılık gelen yürütülebilir konumla değiştirilir.

Dikkat edilmesi gereken bazı noktalar şunlardır:

  • Testleri çalıştırmak için kullanılan PATH, ortamınızdaki PATH'den farklı olabilir. Bu nedenle, --run_under komutu (command-prefix ifadesinin ilk kelimesi) için mutlak yol kullanmanız gerekebilir.
  • stdin bağlı olmadığından --run_under etkileşimli komutlar için kullanılamaz.

Örnekler:

        --run_under=/usr/bin/strace
        --run_under='/usr/bin/strace -c'
        --run_under=/usr/bin/valgrind
        --run_under='/usr/bin/valgrind --quiet --num-callers=20'

Seçimi test et

Çıkış seçim seçenekleri bölümünde belirtildiği gibi, testleri boyut, zaman aşımı, etikete veya dile göre filtreleyebilirsiniz. Kolaylık sağlayan bir genel ad filtresi, belirli filtre bağımsız değişkenlerini test çalıştırıcısına yönlendirebilir.

bazel test için diğer seçenekler

Söz dizimi ve geri kalan seçenekler tam olarak bazel build ile aynıdır.

Yürütülebilir dosyaları çalıştırma

bazel run komutu, bazel build komutuna benzerdir ancak tek bir hedef ve çalıştırmak için kullanılır. Tipik bir oturum aşağıdaki gibidir:

  % bazel run java/myapp:myapp -- --arg1 --arg2
  Welcome to Bazel
  INFO: Loading package: java/myapp
  INFO: Loading package: foo/bar
  INFO: Loading complete.  Analyzing...
  INFO: Found 1 target...
  ...
  Target //java/myapp:myapp up-to-date:
    bazel-bin/java/myapp:myapp
  INFO: Elapsed time: 0.638s, Critical Path: 0.34s

  INFO: Running command line: bazel-bin/java/myapp:myapp --arg1 --arg2
  Hello there
  $EXEC_ROOT/java/myapp/myapp
  --arg1
  --arg2

bazel run, Bazel tarafından oluşturulan ikili programın doğrudan çağırmasına benzer ancak aynı değildir. Bu ikili programın davranışı, çağrılacak ikili programın test olup olmamasına bağlı olarak farklılık gösterir.

İkili program bir test değilse geçerli çalışma dizini, ikili programın çalıştırma dosyaları ağacı olur.

İkili program bir test olduğunda, geçerli çalışma dizini exec root olur ve genellikle çalıştırılan ortam testlerinin çoğaltılması için iyi niyetli bir girişimde bulunulur. Yine de emülasyon mükemmel değildir ve birden fazla parçaya sahip testler bu şekilde çalıştırılamaz (Bu sorunu çözmek için --test_sharding_strategy=disabled komut satırı seçeneği kullanılabilir)

İkili program için aşağıdaki ekstra ortam değişkenleri de kullanılabilir:

  • BUILD_WORKSPACE_DIRECTORY: Derlemenin çalıştırıldığı çalışma alanının kökü.
  • BUILD_WORKING_DIRECTORY: Bazel'ın çalıştırıldığı mevcut çalışma dizini.

Bunlar, örneğin komut satırındaki dosya adlarını kullanıcı dostu bir şekilde yorumlamak için kullanılabilir.

bazel run için seçenekler

--run_under=command-prefix

Bu durum, bazel test için çalıştırılan --run_under seçeneğiyle (yukarıya bakın) aynı etkiye sahiptir (yukarıya bakın). Tek fark, bazel test tarafından çalıştırılan testler yerine bazel run tarafından çalıştırılan komut için geçerli olması ve etiket altında çalıştırılamamasıdır.

Bazel'den gelen günlük kaydı çıktılarını filtreleme

bazel run ile bir ikili program çağrılırken Bazel, Bazel'in kendisinden ve çağrılan ikili programdan günlük kaydı çıktısını yazdırır. Günlük kayıtlarını daha az gürültülü hale getirmek için --ui_event_filters ve --noshow_progress işaretlerini kullanarak Bazel çıktılarını engelleyebilirsiniz.

Örneğin: bazel run --ui_event_filters=-info,-stdout,-stderr --noshow_progress //java/myapp:myapp

Testleri yürütme

bazel run, test ikili programlarını da çalıştırabilir. Bu durum, Test Yazma bölümünde açıklanan ortama yakın bir şekilde testi çalıştırmanızı sağlar. Testi bu şekilde çalıştırırken --test_* bağımsız değişkenlerinin hiçbirinin --test_arg dışında bir etkisi olmadığını unutmayın .

Derleme çıkışlarını temizleme

clean komutu

Bazel'ın, Make komutuna benzer bir clean komutu var. Bu Bazel örneği tarafından gerçekleştirilen tüm derleme yapılandırmaları veya bu Bazel örneği tarafından oluşturulan çalışma ağacının tamamı için çıkış dizinlerini siler ve dahili önbellekleri sıfırlar. Herhangi bir komut satırı seçeneği olmadan yürütülürse tüm yapılandırmaların çıkış dizini temizlenir.

Her Bazel örneğinin tek bir çalışma alanıyla ilişkilendirildiğini, dolayısıyla clean komutunun söz konusu çalışma alanında söz konusu Bazel örneğiyle yaptığınız tüm derlemelerin tüm çıkışlarını sileceğini unutmayın.

Bazel örneği tarafından oluşturulan çalışan ağacın tamamını tamamen kaldırmak için --expunge seçeneğini belirleyebilirsiniz. --expunge ile çalıştırıldığında, temiz komutu yalnızca çıkış tabanı ağacının tamamını kaldırır. Bu ağaç, derleme çıkışının yanı sıra Bazel tarafından oluşturulan tüm geçici dosyaları da içerir. Ayrıca shutdown komutuna eşdeğer olan temizlik işleminin ardından Bazel sunucusunu durdurur. Örneğin, bir Bazel örneğinin tüm disk ve bellek izlerini temizlemek için şunları belirtebilirsiniz:

  % bazel clean --expunge

Alternatif olarak, --expunge_async kullanarak arka planda kalıcı olarak silebilirsiniz. Eşzamansız silme işlemi çalışmaya devam ederken aynı istemcide bir Bazel komutu çağırmak güvenlidir.

clean komutu temel olarak artık ihtiyaç duyulmayan çalışma alanları için disk alanını geri kazanma yöntemi olarak sağlanır. Bazel'in artımlı yeniden oluşturma işlemleri mükemmel olmayabilir. Bu nedenle, sorunlar ortaya çıktığında tutarlı bir durumu kurtarmak için clean kullanılabilir.

Bazel'in tasarımı, bu sorunlar düzeltilebilir ve bu hataların düzeltilmesi büyük önceliktir. Yanlış bir artımlı derleme bulursanız, clean kullanmak yerine bir hata raporu gönderin ve hataları araçlarda bildirin.

Bağımlılık grafiğini sorgulama

Bazel, derleme sırasında kullanılan bağımlılık grafiği hakkında sorular sormak için bir sorgu dili ekler. Sorgu dili, şu iki komut tarafından kullanılır: query ve cquery. İki komut arasındaki en önemli fark, sorgunun yükleme aşamasından ve cquery'nin analiz aşamasından sonra çalışmasıdır. Bu araçlar, çoğu yazılım mühendisliği görevi için paha biçilmez bir yardımcıdır.

Sorgu dili, grafikler yerine cebirsel işlemler fikrine dayalıdır.

Bazel Sorgu Referansı. Örnekler için ve sorguya özgü komut satırı seçenekleri için lütfen söz konusu dokümana bakın.

Sorgu aracı birkaç komut satırı seçeneğini kabul eder. --output, çıkış biçimini seçer. --[no]keep_going (varsayılan olarak devre dışıdır), sorgu aracının hatalar durumunda ilerlemeye devam etmesine neden olur. Hata olması halinde eksik sonuç kabul edilemezse bu davranış devre dışı bırakılabilir.

Varsayılan olarak etkinleştirilen --[no]tool_deps seçeneği, hedeflenmeyen yapılandırmalardaki bağımlılıkların, sorgunun çalıştığı bağımlılık grafiğine dahil edilmesine neden olur.

Varsayılan olarak etkinleştirilen --[no]implicit_deps seçeneği, sorgunun çalıştığı bağımlılık grafiğine dolaylı bağımlılıkların eklenmesine neden olur. Dolaylı bağımlılık, BUILD dosyasında açıkça belirtilmeyen ancak Bazel tarafından eklenen bağımlılıktır.

Örnek: "PEBL ağacındaki tüm testleri oluşturmak için gereken tüm türlerin tanımlarının (DERLEME dosyalarında) konumlarını gösterin."

  bazel query --output location 'kind(genrule, deps(kind(".*_test rule", foo/bar/pebl/...)))'

Eylem grafiğini sorgulama

aquery komutu, derleme grafiğinizdeki işlemleri sorgulamanıza olanak tanır. Analiz sonrası yapılandırılmış hedef grafiği üzerinde çalışır ve eylemler, yapılar ve bunların ilişkileri hakkında bilgiler gösterir.

Araç, çeşitli komut satırı seçeneklerini kabul eder. --output, çıkış biçimini seçer. Varsayılan çıkış biçimi (text) kullanıcılar tarafından okunabilir olan biçimdir. Makine tarafından okunabilir biçim için proto veya textproto kullanın. Özellikle, aquery komutu normal bir Bazel derlemesinin üzerinde çalışır ve derleme sırasında kullanılabilen seçenek grubunu devralır.

Geleneksel query için de kullanılabilen ancak siblings, buildfiles ve tests için de kullanılabilen işlev grubunu destekler.

Daha fazla bilgi için İşlem Grafiği Sorgusu bölümüne bakın.

Çeşitli komutlar ve seçenekler

help

help komutu, çevrimiçi yardım sağlar. Varsayılan olarak, kullanılabilir komutların ve yardım konularının bir özeti gösterilir (Bazel ile oluşturma bölümünde gösterildiği gibi). Bağımsız değişken belirtmek, belirli bir konuyla ilgili ayrıntılı yardımı gösterir. Çoğu konu build veya query gibi Bazel komutlarıdır ancak komutlara karşılık gelmeyen bazı ek yardım konuları da vardır.

--[no]long (-l)

Varsayılan olarak bazel help [topic], yalnızca bir konuyla alakalı seçeneklerin özetini yazdırır. --long seçeneği belirtilirse her seçeneğin tür, varsayılan değer ve tam açıklaması da yazdırılır.

shutdown

Bazel sunucu işlemleri shutdown komutu kullanılarak durdurulabilir. Bu komut, Bazel sunucusunun boşta kaldığı anda (örneğin, devam eden tüm derlemelerin veya diğer komutların tamamlanmasından sonra) çıkış yapmasına neden olur. Daha fazla bilgi için İstemci/sunucu uygulaması bölümüne bakın.

Boşta kalma zaman aşımından sonra Bazel sunucuları kendilerini durdurur. Bu nedenle bu komut nadiren gereklidir. Ancak belirli bir çalışma alanında başka derlemelerin gerçekleşmeyeceğinin bilindiği durumlarda komut dosyalarında yararlı olabilir.

shutdown, tam sayı bağımsız değişkeni gerektiren --iff_heap_size_greater_than _n_ seçeneğini kabul eder (MB cinsinden). Bu değer belirtilirse kapatma işlemi, tüketilen bellek miktarına göre koşullu hale gelir. Bazel sunucusundaki herhangi bir bellek sızıntısı, zaman zaman sistemin tamamen kilitlenmesine neden olabileceğinden bu yöntem, çok sayıda derleme başlatan komut dosyaları için faydalıdır. Koşullu yeniden başlatma işlemi bu durumu önler.

info

info komutu, Bazel sunucu örneğiyle veya belirli bir derleme yapılandırmasıyla ilişkili çeşitli değerleri yazdırır. (Bunlar, derleme çalıştıran komut dosyaları tarafından kullanılabilir.)

info komutu, aşağıdaki listede bulunan anahtarlardan birinin adı olan tek (isteğe bağlı) bağımsız değişkene de izin verir. Bu durumda, bazel info key yalnızca o anahtarın değerini yazdırır. (Bu, sonucu sed -ne /key:/s/key://p boyunca kanal çizme ihtiyacını ortadan kaldırdığı için özellikle Bazel komut dosyası yazılırken kullanışlıdır:

Yapılandırmadan bağımsız veriler

  • release: Bu Bazel örneği için sürüm etiketi veya bu, yayınlanan bir ikili program değilse "geliştirme sürümü"dür.
  • workspace ve temel çalışma alanı dizininin mutlak yolunu belirtin.
  • install_base: Geçerli kullanıcı için bu Bazel örneği tarafından kullanılan yükleme dizininin mutlak yolu. Bazel, dahili olarak gerekli yürütülebilir dosyaları bu dizinin altına yükler.

  • output_base: Geçerli kullanıcı ve çalışma alanı kombinasyonu için bu Bazel örneği tarafından kullanılan temel çıkış dizinine giden mutlak yol. Bazel tüm çalışmalarını bu dizinin altına yerleştirir ve çıktıları oluşturur.

  • execution_root: exit_base altındaki yürütme kök dizinine giden mutlak yol. Bu dizin, derleme sırasında yürütülen komutların erişebildiği tüm dosyaların kökü ve bu komutlar için çalışma dizinidir. Çalışma alanı dizini yazılabilirse bu dizini işaret eden bazel-<workspace> adlı bir sembolik bağlantı yerleştirilir.

  • output_path: Derleme komutlarının sonucu olarak oluşturulan tüm dosyalar için kullanılan, yürütme kökünün altındaki çıkış dizinine giden mutlak yol. Çalışma alanı dizini yazılabilirse bu dizini işaret eden bazel-out adlı bir sembolik bağlantı yerleştirilir.

  • server_pid: Bazel sunucu işleminin işlem kimliği.

  • server_log: Bazel sunucusunun hata ayıklama günlük dosyasının mutlak yolu. Bu dosya, Bazel sunucusunun kullanım ömrü boyunca gerçekleşen tüm komutlar için hata ayıklama bilgilerini içerir ve Bazel geliştiricileri ile deneyimli kullanıcıların kullanımı için hazırlanmıştır.

  • command_log: Komut günlük dosyasının mutlak yolu; en son Bazel komutunun araya eklemeli stdout ve stderr akışlarını içerir. Bu dosya en son Bazel komutu olacağından bazel info komutunun çalıştırılması durumunda dosya içeriğinin üzerine yazılacağını unutmayın. Bununla birlikte, --output_base veya --output_user_root seçeneklerinin ayarını değiştirmediğiniz sürece komut günlük dosyasının konumu değişmez.

  • used-heap-size, committed-heap-size, max-heap-size: Çeşitli JVM yığın boyutu parametrelerini raporlar. Sırasıyla: şu anda kullanılan bellek, şu anda sistemden JVM'ye kullanılabileceği garanti edilen bellek, mümkün olan maksimum ayırma.

  • gc-count, gc-time: Bu Bazel sunucusunun başlangıcından bu yana toplanan kümülatif çöp toplama sayısı ve bunları gerçekleştirmek için harcanan süre. Bu değerlerin her derlemenin başında sıfırlanmadığını unutmayın.

  • package_path: Paketlerin bazel tarafından aranacağı iki nokta üst üste işaretiyle ayrılmış yollar listesi. --package_path derleme komut satırı bağımsız değişkeniyle aynı biçime sahiptir.

Örnek: Bazel sunucusunun işlem kimliği.

% bazel info server_pid
1285

Yapılandırmaya özgü veriler

Bu veriler, bazel info öğesine iletilen yapılandırma seçeneklerinden (ör. --cpu, --compilation_mode) etkilenebilir. Bazıları bir derlemenin çıkış dizininin konumunu, derleyici seçimini vb. belirlediği için info komutu bağımlılık analizini kontrol eden tüm seçenekleri kabul eder.

  • bazel-bin, bazel-testlogs, bazel-genfiles: Derleme tarafından oluşturulan programların bulunduğu bazel-* dizinlerinin mutlak yolunu bildirir. Bu, her zaman olmasa da genellikle başarılı bir derlemenin ardından temel çalışma alanı dizininde oluşturulan bazel-* sembolik bağlantılarıyla aynıdır. Ancak çalışma alanı dizini salt okunursa bazel-* sembolik bağlantıları oluşturulamaz. Sembolik bağlantının var olduğunu varsaymak yerine bazel info tarafından bildirilen değeri kullanan komut dosyaları daha sağlam olur.
  • Eksiksiz "Make" ortamı. --show_make_env işareti belirtilirse mevcut yapılandırmanın "Marka" ortamındaki tüm değişkenler de (ör. CC, GLIBC_VERSION vb.) gösterilir. Bunlar, BUILD dosyalarındaki $(CC) veya varref("CC") söz dizimi kullanılarak erişilen değişkenlerdir.

Örnek: geçerli yapılandırma için C++ derleyici. Bu, "Yapma" ortamındaki $(CC) değişkeni olduğundan --show_make_env işareti gerekir.

  % bazel info --show_make_env -c opt COMPILATION_MODE
  opt

Örnek: Mevcut yapılandırma için bazel-bin çıkış dizini. bazel-bin sembolik bağlantısının herhangi bir nedenle (salt okunur bir dizinden derliyor olmanız gibi) oluşturulamadığı durumlarda bile bunun doğru olacağı garanti edilir.

% bazel info --cpu=piii bazel-bin
/var/tmp/_bazel_johndoe/fbd0e8a34f61ce5d491e3da69d959fe6/execroot/io_bazel/bazel-out/piii-opt/bin
% bazel info --cpu=k8 bazel-bin
/var/tmp/_bazel_johndoe/fbd0e8a34f61ce5d491e3da69d959fe6/execroot/io_bazel/bazel-out/k8-opt/bin

version ve --version

Sürüm komutu, Bazel ikili programının oluşturulduğu değişiklik listesi ve tarih de dahil olmak üzere sürüm ayrıntılarını yazdırır. Bunlar özellikle, en son Bazel sürümüne sahip olup olmadığınızı veya hataları bildirip bildirmediğinizi belirlemek açısından yararlıdır. İlginç değerlerden bazıları şunlardır:

  • changelist: Bazel'in bu sürümünün yayınlandığı değişiklik listesi.
  • label: Bu Bazel örneği için sürüm etiketi veya bu, yayınlanan bir ikili program değilse "geliştirme sürümü"dür. Hata bildiriminde bulunurken çok kullanışlıdır.

Başka bağımsız değişken olmayan bazel --version, bir Bazel sunucusunu başlatma veya sunucu arşivini açma gibi yan etki olmaksızın bazel version --gnu_format ile aynı çıkışı yayınlar. bazel --version her yerden çalıştırılabilir. Çalışma alanı dizini gerektirmez.

mobile-install

mobile-install komutu, uygulamaları mobil cihazlara yükler. Şu anda yalnızca ART çalıştıran Android cihazlar desteklenmektedir.

Daha fazla bilgi için bazel mobil yükleme sayfasını inceleyin.

Aşağıdaki seçenekler desteklenir:

--incremental

Ayarlanırsa Bazel uygulamayı aşamalı olarak, yani yalnızca son derlemeden bu yana değişen bölümleri yüklemeye çalışır. Bu işlem; AndroidManifest.xml, yerel kod veya Java kaynaklarından (Class.getResource() tarafından başvurulanlar gibi) başvurulan kaynakları güncelleyemez. Bu şeyler değişirse bu seçenek atlanmalıdır. Bazel'in ruhunun aksine ve Android platformunun sınırlamaları nedeniyle, bu komutun ne zaman yeterince iyi olduğunu ve tam yüklemenin ne zaman gerekli olduğunu bilmek kullanıcının sorumluluğundadır.

Marshmallow veya daha yeni bir sürümün yüklü olduğu bir cihaz kullanıyorsanız --split_apks işaretini kullanabilirsiniz.

--split_apks

Uygulamayı cihaza yüklemek ve güncellemek için bölünmüş apk'lerin kullanılıp kullanılmayacağı. Yalnızca Marshmallow veya sonraki sürümlere sahip cihazlarda çalışır. --split_apks kullanılırken --incremental işaretinin gerekli olmadığını unutmayın.

--start_app

Yükleme sonrasında uygulamayı temiz bir durumda başlatır. --start=COLD etiketine eş değer.

--debug_app

Yükleme sonrasında uygulamayı temiz durumda başlatmadan önce hata ayıklayıcının eklenmesini bekler. --start=DEBUG etiketine eş değer.

--start=_start_type_

Uygulamanın yüklendikten sonra başlatılması gerektiği. Desteklenen _start_type_s:

  • NO Uygulamayı başlatmaz. Bu varsayılan ayardır.
  • COLD Yükleme sonrasında uygulamayı temiz bir durumdan başlatır.
  • WARM Artımlı yüklemelerde uygulama durumunu korur ve geri yükler.
  • DEBUG Yükleme işleminden sonra uygulamayı temiz bir durumda başlatmadan önce hata ayıklayıcının çalışmasını bekler.

--adb=path

Kullanılacak adb ikili programını gösterir.

Varsayılan olarak adb, --android_sdk tarafından belirtilen Android SDK'sında kullanılır.

--adb_arg=serial

adb için ekstra bağımsız değişkenler. Bunlar, komut satırındaki alt komuttan önce gelir ve genellikle hangi cihaza yükleneceğini belirtmek için kullanılır. Örneğin, kullanılacak Android cihazı veya emülatörü seçmek için:

% bazel mobile-install --adb_arg=-s --adb_arg=deadbeef

adb öğesini şu şekilde çağırır:

adb -s deadbeef install ...

--incremental_install_verbosity=number

Artımlı yüklemenin ayrıntısı. Hata ayıklama günlük kaydının konsola yazdırılması için 1 olarak ayarlayın.

dump

dump komutu, Bazel sunucusunun dahili durumunun dökümü için stdout'a yazdırılır. Bu komut özellikle Bazel geliştiricileri tarafından kullanılmak üzere tasarlanmıştır. Bu nedenle bu komutun çıkışı belirtilmemiştir ve değiştirilebilir.

Varsayılan olarak, komut yalnızca Bazel durumunun belirli alanlarına döküm yapmayla ilgili olası seçenekleri özetleyen yardım mesajını yazdırır. Dahili durumun dökümünü almak için seçeneklerden en az biri belirtilmelidir.

Aşağıdaki seçenekler desteklenir:

  • --action_cache, işlem önbelleği içeriğini doldurur.
  • --packages, paket önbellek içeriğini dökümü yapar.
  • --skyframe, dahili Bazel bağımlılık grafiğinin durumunu dökümler.
  • --rules, her kural ve en boy sınıfı için sayılar ve işlem sayıları dahil olmak üzere kural özetinin dökümünü alır. Buna hem yerel hem de Starlark kuralları dahildir. Bellek izleme etkinse kuralların bellek tüketimi de yazdırılır.
  • --skylark_memory, pprof uyumlu bir .gz dosyasını belirtilen yola atar. Bu özelliğin çalışması için bellek izlemeyi etkinleştirmeniz gerekir.

Bellek izleme

Bazı dump komutları bellek izleme gerektirir. Bunu açmak için başlangıç bayraklarını Bazel'e iletmeniz gerekir:

  • --host_jvm_args=-javaagent:$BAZEL/third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar
  • --host_jvm_args=-DRULE_MEMORY_TRACKER=1

Java aracısı, third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar adresinden Bazel'e kontrol edildi. Bu nedenle, $BAZEL deposunu Bazel deponuzu saklayacağınız yer için ayarladığınızdan emin olun.

Her komut için bu seçenekleri Bazel'e iletmeyi unutmayın. Aksi takdirde sunucu yeniden başlatılır.

Örnek:

    % bazel --host_jvm_args=-javaagent:$BAZEL/third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar \
    --host_jvm_args=-DRULE_MEMORY_TRACKER=1 \
    build --nobuild <targets>

    # Dump rules
    % bazel --host_jvm_args=-javaagent:$BAZEL/third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar \
    --host_jvm_args=-DRULE_MEMORY_TRACKER=1 \
    dump --rules

    # Dump Starlark heap and analyze it with pprof
    % bazel --host_jvm_args=-javaagent:$BAZEL/third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar \
    --host_jvm_args=-DRULE_MEMORY_TRACKER=1 \
    dump --skylark_memory=$HOME/prof.gz
    % pprof -flame $HOME/prof.gz

analyze-profile

analyze-profile komutu, --profile seçeneğini kullanarak derleme sırasında daha önce toplanan verileri analiz eder. Derleme yürütme analizi gerçekleştirmek veya verileri belirtilen biçimde dışa aktarmak için çeşitli seçenekler sunar.

Aşağıdaki seçenekler desteklenir:

  • --dump, toplanan tüm verileri kullanıcıların okuyabileceği bir biçimde gösterir. Ancak bu yöntem, diğer biçimleri henüz desteklememektedir.

Biçim ayrıntıları ve kullanım yardımı için Profil oluşturma yoluyla performans sorunlarını giderme bölümüne bakın.

canonicalize-flags

Bazel komutu için seçeneklerin listesini alıp aynı etkiye sahip seçenekler listesi döndüren canonicalize-flags komutu. Yeni seçenek listesi standarttır. Örneğin, aynı etkiye sahip iki seçenek listesi aynı yeni listeye standartlaştırılır.

--for_command seçeneği, farklı komutlar arasından seçim yapmak için kullanılabilir. Şu anda yalnızca build ve test desteklenmektedir. Belirtilen komutun desteklemediği seçenekler hataya neden oluyor.

Örnek olarak:

  % bazel canonicalize-flags -- --config=any_name --test_tag_filters="-lint"
  --config=any_name
  --test_tag_filters=-lint

Başlatma seçenekleri

Bu bölümde açıklanan seçenekler, Bazel sunucusu işlemi tarafından kullanılan Java sanal makinesinin başlatılmasını etkiler ve bu seçenekler, söz konusu sunucu tarafından işlenen tüm sonraki komutlar için geçerlidir. Zaten çalışan bir Bazel sunucusu varsa ve başlatma seçenekleri eşleşmezse yeniden başlatılır.

Bu bölümde açıklanan tüm seçenekler, --key=value veya --key value söz dizimi kullanılarak belirtilmelidir. Ayrıca bu seçenekler, Bazel komutunun adından önce görünmelidir. Bunları bir .bazelrc dosyasında listelemek için startup --key=value kullanın.

--output_base=dir

Bu seçenek, yazılabilir bir dizin belirtmesi gereken bir yol bağımsız değişkeni gerektirir. Bazel, tüm çıktılarını yazmak için bu konumu kullanır. Çıktı tabanı aynı zamanda istemcinin Bazel sunucusunu bulduğu anahtardır. Çıkış tabanını değiştirerek komutu işleyecek olan sunucuyu değiştirmiş olursunuz.

Varsayılan olarak, çıktı tabanı, kullanıcının giriş adından ve çalışma alanı dizininin adından (aslında MD5 özetinden) türetilir. Dolayısıyla tipik bir değer şu şekilde görünür: /var/tmp/google/_bazel_johndoe/d41d8cd98f00b204e9800998ecf8427e.

Örneğin:

 OUTPUT_BASE=/var/tmp/google/_bazel_johndoe/custom_output_base
% bazel --output_base ${OUTPUT_BASE}1 build //foo  &  bazel --output_base ${OUTPUT_BASE}2 build //bar

Bu komutta, iki Bazel komutu eş zamanlı olarak çalışır (kabuk &amp; operatörü nedeniyle). Her biri farklı bir Bazel sunucu örneği kullanır (farklı çıkış tabanları nedeniyle). Buna karşılık, her iki komutta da varsayılan çıkış tabanı kullanıldıysa her iki istek de aynı sunucuya gönderilir ve bu istekler sırayla işlenir: Önce //foo, ardından artımlı //bar derlemesi.

--output_user_root=dir

Çıkış ve yükleme tabanlarının oluşturulduğu kök dizine işaret eder. Dizin ya mevcut değil ya da çağrı yapan kullanıcıya ait olmalıdır. Geçmişte, bunun çeşitli kullanıcılar arasında paylaşılan bir dizine işaret etmesine izin veriliyordu, ancak artık izin verilmiyor. 11100 numaralı sorun ele alındıktan sonra buna izin verilebilir.

--output_base seçeneği belirtilirse çıkış tabanını hesaplamak için --output_user_root kullanılarak geçersiz kılınır.

Yükleme tabanı konumu, --output_user_root ve Bazel yerleşik ikili programlarının MD5 kimliğine dayalı olarak hesaplanır.

Dosya sistemi düzeninizde daha iyi bir konum varsa tüm Bazel çıkışı (yükleme tabanı ve çıkış tabanı) için alternatif bir temel konum seçmek üzere --output_user_root seçeneğini kullanabilirsiniz.

--server_javabase=dir

Bazel'in çalıştığı Java sanal makinesini belirtir. Değer, JDK veya JRE içeren dizine giden bir yol olmalıdır. Etiket olmamalıdır. Bu seçenek, herhangi bir Bazel komutundan önce görünmelidir. Örneğin:

  % bazel --server_javabase=/usr/local/buildtools/java/jdk11 build //foo

Bu işaret; uygulamalar, testler, araçlar vb. Bazel alt işlemleri tarafından kullanılan JVM'leri etkilemez. Bunun yerine --javabase veya --host_javabase derleme seçeneklerini kullanın.

Bu işaret, daha önce --host_javabase olarak adlandırılıyordu (bazen "sol taraf" --host_javabase olarak da adlandırılıyordu) ancak derleme işareti --host_javabase (bazen "sağ taraf" --host_javabase olarak da anılır) ile karışıklık olmasını önlemek için yeniden adlandırıldı.

--host_jvm_args=string

Bazel'in çalıştırıldığı Java sanal makinesine iletilecek başlangıç seçeneğini belirtir. Bu değer, yığın boyutunu ayarlamak için kullanılabilir. Örneğin:

  % bazel --host_jvm_args="-Xss256K" build //foo

Bu seçenek, tek tek bağımsız değişkenlerle birden çok kez kullanılabilir. Bu işaretin ayarlanmasının nadiren gerekli olduğunu unutmayın. Ayrıca, her biri ayrı bir JVM bağımsız değişkeni olarak yorumlanacak, boşlukla ayrılmış bir dize listesi de aktarabilirsiniz ancak bu özellik yakında kullanımdan kaldırılacaktır.

Bu durum, Bazel'in alt işlemleri (uygulamalar, testler, araçlar vb.) tarafından kullanılan JVM'leri etkilemez. JVM seçeneklerini bazel run tarafından çalıştırılan veya komut satırında çalıştırılan yürütülebilir Java programlarına iletmek için java_binary ve java_test programlarının tümünün desteklediği --jvm_flags bağımsız değişkenini kullanmanız gerekir. Testler için alternatif olarak bazel test --test_arg=--jvm_flags=foo ... kullanabilirsiniz.

--host_jvm_debug

Bu seçenek, Java sanal makinesinin, Bazel'in ana yöntemini çağırmadan önce JDWP uyumlu bir hata ayıklayıcıdan bağlantı kurulmasını beklemesine neden olur. Bu, esas olarak Bazel geliştiricileri tarafından kullanılmak üzere tasarlanmıştır.

--autodetect_server_javabase

Bu seçenek, Bazel'in başlangıçta yüklü bir JDK'yı otomatik olarak aramasına ve yerleşik JRE yoksa, yüklü JRE'ye geri dönmesine neden olur. --explicit_server_javabase, Bazel'ı birlikte çalıştıracağınız açık bir JRE'yi seçmek için kullanılabilir.

--batch

Toplu işlem modu, Bazel'ın standart istemci/sunucu modunu kullanmamasına neden olur. Bunun yerine tek bir komut için bazel Java işlemi çalıştırır. Bu, sinyal işleme, iş denetimi ve ortam değişkeni devri ile ilgili olarak daha tahmin edilebilir anlamlar için kullanılmış olan ve Firebase jail'i bir "chroot jail"de çalıştırmak için gereklidir.

Toplu mod, aynı çıkış_tabanında uygun sıralama semantiğini korur. Yani eş zamanlı çağrılar çakışma olmadan sırayla işlenir. Bazel toplu mod, çalışan bir sunucuya sahip bir istemcide çalıştırılırsa komut işlemeden önce sunucuyu sonlandırır.

Bazel, toplu modda veya yukarıda açıklanan alternatiflerle daha yavaş çalışır. Bunun nedeni, diğer unsurların yanı sıra derleme dosyası önbelleğinin bellekte yerleşik olması ve sıralı toplu çağrılar arasında korunmamasıdır. Bu nedenle, sürekli derlemeler gibi performansın daha az kritik olduğu durumlarda toplu modu kullanmak genellikle daha mantıklıdır.

--max_idle_secs=n

Bu seçenek, son istemci isteğinden sonra Bazel sunucu işleminin çıkmadan önce ne kadar süre (saniye cinsinden) beklemesi gerektiğini belirtir. Varsayılan değer 10800'dür (3 saat). --max_idle_secs=0, Bazel sunucu işleminin süresiz olarak devam etmesini sağlar.

Bu seçenek, kullanıcının makinesinde başka şekilde çalışmayacakları sırada Bazel sunucu işlemlerini bırakmamalarını sağlamak için Bazel'i çağıran komut dosyaları tarafından kullanılabilir. Örneğin, bir ön gönderme komut dosyası, bir kullanıcının bekleyen değişikliğinin istenmeyen bağımlılıklara yol açmadığından emin olmak için bazel query komutunu çağırmak isteyebilir. Bununla birlikte, kullanıcı söz konusu çalışma alanında yakın zamanda bir derleme yapmamışsa yayın öncesi komut dosyasının, yalnızca günün geri kalanında boşta kalması için bir Bazel sunucusu başlatması istenmez. Sorgu isteğinde --max_idle_secs gibi küçük bir değer belirterek komut dosyası, yeni bir sunucunun başlatılmasına if bu sunucudan hemen çıkış yapmasını sağlayabilir. Ancak, bunun yerine zaten çalışan bir sunucu varsa bu sunucu, bu sunucu boyunca boşta kalana kadar çalışmaya devam eder. Tabii ki, mevcut sunucunun boşta kalma zamanlayıcısı sıfırlanır.

--[no]shutdown_on_low_sys_mem

Politika etkinleştirilirse ve --max_idle_secs pozitif bir süreye ayarlanırsa derleme sunucusu bir süre boşta kaldığında sistemin belleği azaldığında sunucuyu kapatın. Yalnızca Linux.

Derleme sunucusu, max_idle_secs değerine karşılık gelen bir boşta kalma denetimi çalıştırmanın yanı sıra, sunucu bir süre boşta kaldığında kullanılabilir sistem belleğini izlemeye başlar. Kullanılabilir sistem belleği kritik düzeyde azalırsa sunucudan çıkılır.

--[no]block_for_lock

Etkinleştirilirse Bazel, ilerlemeden önce sunucu kilidini tutan diğer Bazel komutlarının tamamlanmasını bekler. Devre dışı bırakılırsa, Bazel kilidi hemen alıp devam edemezse yanlışlıkla çıkar.

Geliştiriciler, aynı istemcideki başka bir Bazel komutunun neden olduğu uzun beklemeleri önlemek için bunu gönderme öncesi kontrollerde kullanabilir.

--io_nice_level=n

En iyi çaba KS planlaması için 0-7 arasında bir seviye ayarlar. 0 en yüksek öncelik, 7 en düşük önceliktir. Öngörülen planlayıcı yalnızca öncelik 4'e kadar kullanılabilir. Negatif değerler yok sayılır.

--batch_cpu_scheduling

Bazel için batch CPU zaman planlamasını kullanın. Bu politika, etkileşimli olmayan ancak güzel değerlerini düşürmek istemeyen iş yükleri için yararlıdır. Bkz. "ad 2 sched_setscheduler". Bu politika, Bazel işleme hızına rağmen daha iyi sistem etkileşimi sağlayabilir.

Çeşitli seçenekler

--[no]announce_rc

Başlatma sırasında Bazel'in bazelrc dosyasından okunan komut seçeneklerini anlayıp duyurmayacağını kontrol eder. (Başlatma seçenekleri koşulsuz olarak duyurulur.)

--color (yes|no|auto)

Bu seçenek, Bazel'in ekrandaki çıktısını vurgulamak için renkleri kullanıp kullanmayacağını belirler.

Bu seçenek yes olarak ayarlanırsa renk çıkışı etkinleştirilir. Bu seçenek auto olarak ayarlanırsa Bazel, yalnızca çıkış bir terminale gönderiliyorsa ve TERM ortam değişkeni dumb, emacs veya xterm-mono dışında bir değere ayarlanmışsa renkli çıkışı kullanır. Bu seçenek no olarak ayarlanırsa çıkışın bir terminale gidip gitmediğinden ve TERM ortam değişkeninin ayarından bağımsız olarak renk çıkışı devre dışı bırakılır.

--config=name

rc dosyalarından ek yapılandırma bölümünü seçer; geçerli command için böyle bir bölüm varsa command:name bölümündeki seçenekleri de alır. Çeşitli yapılandırma bölümlerinden işaret eklemek için birden fazla kez belirtilebilir. Genişletmeler diğer tanımlar anlamına gelebilir (örneğin, genişletmeler zincirlenebilir).

--curses (yes|no|auto)

Bu seçenek, Bazel'ın ekran çıktısında imleç kontrollerini kullanıp kullanmayacağını belirler. Bu da verilerin kaydırılmasında azalmanın yanı sıra Bazel'in daha kompakt ve kolay okunur bir çıktı akışı sağlar. Bu, --color ile uyumludur.

Bu seçenek yes olarak ayarlanırsa imleç denetimlerinin kullanımı etkinleştirilir. Bu seçenek no olarak ayarlanırsa imleç denetimlerinin kullanımı devre dışı bırakılır. Bu seçenek auto değerine ayarlanırsa imleç denetimlerinin kullanımı --color=auto ile aynı koşullar altında etkinleştirilir.

--[no]show_timestamps

Belirtilirse, Bazel tarafından oluşturulan her mesaja mesajın görüntülendiği saati belirten bir zaman damgası eklenir.