Bu sayfada, çeşitli Bazel komutlarında kullanabileceğiniz seçenekler açıklanmıştır.
bazel build
, bazel run
ve bazel test
gibi. Bu sayfa, Bazel ile derleme başlıklı makaledeki Bazel komutları listesinin tamamlayıcısıdır.
Hedef söz dizimi
build
veya test
gibi bazı komutlar, hedef listesinde çalışabilir. Etiketlerden daha esnek bir söz dizimi kullanırlar. Bu söz dizimi, Oluşturulacak hedefleri belirtme bölümünde açıklanmıştı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, online yardım mesajları her bir seçeneğin anlamı, türü ve varsayılan değeri hakkında özet bilgiler sağlar.
Çoğu seçenek yalnızca bir kez belirtilebilir. Birden çok kez belirtildiğinde son örnek kazanır. Birden çok kez belirtilebilecek seçenekler çevrimiçi yardımda 'birden fazla kez kullanılabilir' metniyle işaretlenmiştir.
Paket konumu
--package_path
Bu seçenek, aranan dizin grubunu belirtir belirli bir paketin BUILD dosyasını bulun.
Bazel, paket yolunu arayarak paketlerini bulur. Bu bir iki nokta üst üste bazel dizinlerinin ayrılmış sıralı listesidir. Her bir dizin kısmi kaynak ağacı.
--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:
- İlk karakter
/
ise yol mutlaktır. - Yol
%workspace%
ile başlıyorsa en yakın kapsayıcı bazel dizine göre alınır. Örneğin, çalışma dizininiz/home/bob/clients/bob_client/bazel/foo
ise package-path parametresindeki%workspace%
dizesi/home/bob/clients/bob_client/bazel
olarak genişletilir. - Diğer tüm değerler, çalışma dizine göre alınır.
Genelde yapmak istediğiniz şey bu değildir,
ve bazel çalışma alanının altındaki dizinlerde Bazel kullanırsanız beklenmedik şekilde davranabilir.
Örneğin,
.
paket yolu öğesini kullanır ve ardından cd komutuyla/home/bob/clients/bob_client/bazel/foo
dizine giderseniz paketler/home/bob/clients/bob_client/bazel/foo
dizininden çözülür.
Varsayılan olmayan bir paket yolu kullanıyorsanız Bazel yapılandırma dosyasını kullanın.
Bazel, herhangi bir paketin geçerli dizin oluşturun, böylece boş bir bazel'dan derleme yapabilirsiniz gerekli tüm paketler başka bir yerde bulunabiliyorsa Workspace belirtir.
Ö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'in silinmiş olarak kabul etmesi ve paket yolundaki herhangi bir dizinden yükleme denemesi yapmaması gereken paketlerin virgülle ayrılmış bir listesini belirtir. Bu kod, silinmeyen paketlerin silinmesini simüle etmek için kullanılabilir. silmelerini sağlayabilirsiniz. Bu seçenek birden çok kez iletilebilir. Bu durumda, listeler birleştirilir.
Hata kontrolü
Bu seçenekler, Bazel'in hata kontrolünü ve/veya uyarılarını kontrol eder.
--[no]check_visibility
Bu seçenek yanlış değerine ayarlanırsa görünürlük kontrolleri uyarı düzeyine düşürülür. Bu seçeneğin varsayılan değeri true olduğundan varsayılan olarak görünürlük kontrolü yapılır.
--output_filter=regex
--output_filter
seçeneği yalnızca derlemeyi ve derlemeyi gösterir
uyarılar normal ifadeyle eşleşen hedefler için geçerlidir. Bir hedef, verilen normal ifadeyle eşleşmezse 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ı tipik değerler verilmiştir:
`--output_filter='^//(first/project|second/project):'` | Belirtilen paketlerin çıkışını gösterin. |
`--output_filter='^//((?!(first/bad_project|second/bad_project):).)*$'` | Belirtilen paketlerin çıkışını göstermez. |
`--output_filter=` | Her şeyi gösterin. |
`--output_filter=DONT_MATCH_ANYTHING` | Hiçbir şey gösterme. |
Araç işaretleri
Bu seçenekler, Bazel'in 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şken alır. Bağımsız değişken, her çağrıldığında derleyiciye aktarılır ve/veya C, C++ ya da C++ önceden işleme, derleme ve/veya assembler kodu kullanabilirsiniz. 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 konuma bağımlı olmayan kod oluşturur.
--host_copt=cc-option
Bu seçenek, exec yapılandırmasında derlenen kaynak dosyalar için derleyiciye iletilecek bir bağımsız değişken alır. Bu, --copt
seçeneğine benzer ancak yalnızca yürütücü yapılandırması için geçerlidir.
--host_conlyopt=cc-option
Bu seçenek, exec yapılandırmasında derlenen C kaynak dosyaları için derleyiciye iletilecek bir bağımsız değişken alır. Bu, --conlyopt
seçeneğine benzer ancak yalnızca exec yapılandırması için geçerlidir.
--host_cxxopt=cc-option
Bu seçenek, C++ kaynak dosyaları için derleyiciye iletilecek bir bağımsız değişkeni alır
exec yapılandırmasında derlenen komut dosyalarıdır. Bu, --cxxopt
seçeneğine benzer ancak yalnızca yürütücü yapılandırması için geçerlidir.
--host_linkopt=linker-option
Bu seçenek, kaynak dosyalar için bağlayıcıya iletilecek bir bağımsız değişken alır
exec yapılandırmasında derlenen komut dosyalarıdır. Bu, --linkopt
seçeneğine benzer ancak yalnızca exec 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
'e benzer ancak yalnızca C derlemesi için geçerlidir, C++ derlemesi veya bağlama için geçerli değildir. Bu nedenle, --conlyopt
kullanarak C'ye özgü seçenekleri (-Wno-pointer-sign
gibi) iletebilirsiniz.
--cxxopt=cc-option
Bu seçenek, aşağıdaki durumlarda derleyiciye iletilecek bir bağımsız değişkeni alır: C++ kaynak dosyalarını derleme.
Bu, --copt
ile benzer ancak yalnızca C++ derlemesi için geçerlidir, C derlemesi veya bağlama için geçerli değildir. Böylece C++'a özgü seçenekleri iletebilirsiniz.
(-fpermissive
veya -fno-implicit-templates
gibi) --cxxopt
kullanarak.
Örneğin:
% bazel build --cxxopt="-fpermissive" --cxxopt="-Wno-error" //foo/cruddy_code
--linkopt=linker-option
Bu seçenek, bağlantı oluşturulurken derleyiciye iletilecek bir bağımsız değişken alır.
Bu, --copt
özelliğine benzer ancak yalnızca bağlantı oluşturma için geçerlidir.
derlemeyin. Böylece, yalnızca anlam ifade eden derleyici seçeneklerini iletebilirsiniz.
sırasında (ör. -lssp
veya -Wl,--wrap,abort
)
--linkopt
kullanılıyor. Örneğin:
% bazel build --copt="-fmudflap" --linkopt="-lmudflap" //foo/buggy_code
Derleme kuralları, özelliklerinde bağlantı seçeneklerini de belirtebilir. Bu seçeneğin her zaman önceliklidir. Ayrıca cc_library.linkopts parametresine de bakın.
--strip (always|never|sometimes)
Bu seçenek, Bazel'in
tüm ikili programlar ve paylaşılan kitaplıklar için bağlayıcıyı -Wl,--strip-debug
seçeneğiyle çağırın.
--strip=always
, hata ayıklama bilgilerini her zaman çıkarmak anlamına gelir.
--strip=never
, hata ayıklama bilgilerini asla çıkarmayacağı anlamına gelir.
--strip=sometimes
varsayılan değeri, --compilation_mode
şu anda fastbuild
.
% bazel build --strip=always //foo:bar
, oluşturulan tüm ikili dosyalardan hata ayıklama bilgilerini kaldırarak hedefi derleyecektir.
Bazel'in --strip
seçeneği, ld'nin --strip-debug
seçeneğine karşılık gelir: Yalnızca hata ayıklama bilgilerini kaldırır. Herhangi bir nedenle tüm sembolleri çıkarmak isterseniz
hata ayıklama simgelerinin yanı sıra ld'in --strip-all
seçeneğini de kullanmanız gerekir.
--linkopt=-Wl,--strip-all
'ı Bazel'e ileterek bunu yapabilirsiniz. Diğer seçenekler
Bazel'ın --strip
işaretinin ayarlanması,
--linkopt=-Wl,--strip-all
, bu nedenle ikisinden yalnızca birini ayarlamanız gerekir.
Yalnızca tek bir ikili program oluşturuyorsanız ve tüm simgelerin kaldırılmasını istiyorsanız,
--stripopt=--strip-all
öğesini geçirin ve
Hedefin //foo:bar.stripped
sürümü. --stripopt
bölümünde açıklandığı gibi, bu işlem, stripping işlemini derlemenin tüm bağlantı işlemlerine dahil etmek yerine nihai ikili bağlandıktan sonra bir stripping işlemi uygular.
--stripopt=strip-option
Bu, *.stripped
ikili dosyası oluştururken strip
komutuna iletilen ek bir seçenektir. Varsayılan değer -S -p
'tir. Bu seçenek birden çok kez kullanılabilir.
--fdo_instrument=profile-output-dir
--fdo_instrument
seçeneği, derlenmiş C/C++ ikili dosyası yürütüldüğünde FDO (geri bildirime dayalı optimizasyon) profil çıktısının oluşturulmasını sağlar. GCC için, sağlanan bağımsız değişken
.gcda dosyalarından oluşan nesne başına dosya dizini ağacının dizin öneki
her .o dosyası için profil bilgilerini içerir.
Profil veri ağacı oluşturulduktan sonra, FDO'ya göre optimize edilmiş derlemeyi etkinleştirmek için profil ağacı sıkıştırılmalı ve --fdo_optimize=profile-zip
Bazel seçeneğine sağlanmalıdır.
LLVM derleyicisi için bu bağımsız değişken, ham LLVM profil 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 bildirim odaklı 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, her .o dosyası için profil bilgilerini içeren .gcda dosyalarının önceden oluşturulmuş dosya ağacını içeren zip dosyasıdır.
Alternatif olarak, sağlanan bağımsız değişken bir otomatik profili işaret edebilir .afdo uzantısıyla tanımlanır.
LLVM derleyicisi için sağlanan bağımsız değişken, dizine eklenen LLVM'ye işaret etmelidir. llvm-profdata aracı tarafından hazırlanan profil çıkış dosyasıdır ve .profdata uzantılı olmalıdır uzantısına sahip olur.
--fdo_instrument
ve --fdo_optimize
seçenekleri aynı anda kullanılamaz.
--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
yalnızca Java 8 spesifikasyonuyla uyumlu yapılara izin verir ve bunları derler.
Varsayılan değer 11'dir. -->
Olası değerler: 8, 9, 10, 11, 14 ve 15 ve genişletilebilir
default_java_toolchain
kullanarak özel Java araç zincirleri kaydetme.
--tool_java_language_version=version
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
bir uzak depodan JDK 11'i indirir ve onu kullanarak Java uygulamasını çalıştırır.
local_jdk
varsayılan değerdir.
Olası değerler: local_jdk
, local_jdk_version
,
remotejdk_11
ve remotejdk_17
.
Aşağıdaki iki yöntemden birini kullanarak özel bir JVM kaydederek değerleri genişletebilirsiniz:
local_java_repository
veya remote_java_repository
depo kuralları.
--tool_java_runtime_version=version
Derleme sırasında gerekli olan araçları yürütmek için kullanılan JVM sürümü.
Varsayılan değer remotejdk_11
'tür.
--jvmopt=jvm-option
Bu seçenek, seçenek bağımsız değişkenlerinin Java sanal makinesine iletilmesine olanak tanır. Tek bir büyük bağımsız değişkenle veya 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 ikililerini başlatmak için sunucu sanal makinesini kullanır ve başlangıç yığını boyutunu 256 MB'a çıkarın.
--javacopt=javac-option
Bu seçenek, seçenek bağımsız değişkenlerinin javac'a iletilmesine olanak tanır. Tek bir büyük bağımsız değişkenle veya 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.
Seçenek, javac için Bazel yerleşik varsayılan seçeneklerinden sonra ve kural başına seçeneklerden önce javac'a iletilir. 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 eksik doğrudan bağımlılıkları kontrol edip etmediğini kontrol eder. Java hedefleri, doğrudan kullanılan tüm hedefleri ve bildirmeyi konuştuk. Bu işaret, javac'ya gerçekten kullanılan jar'ları belirlemesi için talimat verir her Java dosyasını kontrol etmek için tür ve çıktı değilse uyar/hata doğrudan bağlılığından kaynaklanır.
off
, kontrolün devre dışı olduğu anlamına gelir.warn
, javac'ın eksik her doğrudan bağımlılık için[strict]
türündeki standart Java uyarıları oluşturacağı anlamına gelir.default
,strict
veerror
tümü Javac'nin uyarılar yerine hatalar oluşturacağı ve bunun da mevcut herhangi bir eksik doğrudan bağımlılık bulunursa hedefin oluşturulamaması sağlanır. Bu, işaret belirtilmediğinde de varsayılan davranıştır.
Anlamsal zekayı oluşturun
Bu seçenekler derleme komutlarını ve/veya çıkış dosyası içeriklerini etkiler.
--compilation_mode (fastbuild|opt|dbg)
(-c)
--compilation_mode
seçeneği (genellikle -c
,
özellikle -c opt
), fastbuild
, dbg
bağımsız değişkenini alır
veya opt
ve çeşitli C/C++ kod oluşturma işlemlerini etkiler
optimizasyon düzeyi ve eksiksiz olması gibi seçenekler
hata ayıklama tabloları oluşturun. Bazel, her farklı derleme modu için farklı bir çıkış dizini kullanır. Böylece, her seferinde tam yeniden derleme yapmanıza gerek kalmadan modlar arasında geçiş yapabilirsiniz.
fastbuild
, mümkün olduğunca hızlı derleme anlamına gelir: minimum hata ayıklama bilgisi oluşturun (-gmlt -Wl,-S
) ve optimize etmeyin. Bu, varsayılandır. Not:-DNDEBUG
ayarlanmaz.dbg
, gdb'yi (veya başka bir hata ayıklayıcıyı) kullanabilmeniz için hata ayıklama özelliği etkinleştirilmiş şekilde (-g
) derleme anlamına gelir.opt
, optimizasyon etkin veassert()
çağrıları devre dışı (-O2 -DNDEBUG
) olarak derleme anlamına gelir.--copt -g
parametresini de iletmediğiniz sürece hata ayıklama bilgileriopt
modunda oluşturulmaz.
--cpu=cpu
Bu seçenek, derleme sırasında ikili dosyaların derlenmesi 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 adıyla belirtilebilir. Bu durumda değer, çağırma ortamından alınır. Değişkenler, name=value
çiftiyle de belirtilebilir. Bu durumda değer, çağırma ortamından bağımsız olarak ayarlanır.
Bu --action_env
işareti birden çok kez belirtilebilir. Birden fazla --action_env
işaretinde aynı değişkene bir değer atanırsa en son atama geçerli olur.
--experimental_action_listener=label
experimental_action_listener
seçeneği, Bazel'a
label tarafından belirtilen action_listener
kuralındaki ayrıntılar
ekleme grafiğine extra_actions
ekleyin.
--[no]experimental_extra_action_top_level_only
Bu seçenek true (doğru) değerine ayarlanırsa --experimental_action_listener
komut satırı seçeneğiyle 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
planlamak için hedef grubunu filtreleyin.
Bu işaret yalnızca --experimental_action_listener
işaretiyle birlikte kullanılabilir.
Varsayılan olarakextra_actions
istenen hedeflerin yürütülmesi planlandı.
--experimental_extra_action_filter
, planlamayı, sahibinin etiketinin belirtilen normal ifadeyle eşleştiği extra_actions
ile sınırlandırır.
Aşağıdaki örnekte, extra_actions
planlaması yalnızca sahibinin etiketinde "/bar/" bulunan işlemler için geçerli olacak şekilde sınırlandırılmıştır:
% bazel build --experimental_action_listener=//test:al //foo/... \ --experimental_extra_action_filter=.*/bar/.*
--host_cpu=cpu
Bu seçenek, kullanılması gereken CPU mimarisinin adını barındırma araçları oluşturmak için kullanılır.
--android_platforms=platform[,platform]*
android_binary
kurallarının geçişli deps
'ünü oluşturacak platformlar (özellikle C++ gibi yerel bağımlılıklar için). Örneğin, bir android_binary
kuralının geçişli deps
'ünde bir cc_library
görünüyorsa android_binary
kuralı için --android_platforms
ile belirtilen her platformda bir kez derlenir ve nihai çıkışa dahil edilir.
Bu işaret için varsayılan bir değer yok: Özel Android platformu tanımlanıp kullanılır.
--android_platforms
ile belirtilen her platform için bir .so
dosyası oluşturulur ve APK'ya paketlenir. .so
dosyasının adı,
"lib" içeren android_binary
kural. Örneğin,
android_binary
"foo" ise dosya libfoo.so
olur.
--per_file_copt=[+-]regex[,[+-]regex]...@option[,option]...
Mevcut olduğunda, dahil etme normal ifadesinden biriyle eşleşen etikete veya yürütme yoluna sahip herhangi bir C++ dosyası
dışlama ifadelerinin hiçbiriyle eşleşmeyen ifadeler oluşturulur
tercih edebilirsiniz. Etiket eşleştirme, etiketin standart biçimini kullanır (ör. //package
:label_name
).
Yürütme yolu, temel adı da içeren Workspace dizininizin göreli yoludur (uzantı dahil) C++ dosyasının otomatik olarak oynatılmasını sağlar. Platforma bağlı ön ekler de buna dahildir.
Bazel, oluşturulan dosyalarla (ör. genrule çıkışları) eşleştirme yapmak için yalnızca yürütme yolunu kullanabilir. Bu durumda normal ifade, herhangi bir yürütme yoluyla eşleşmediğinden "//" ile başlamamalıdır. Paket adları şu şekilde kullanılabilir:
--per_file_copt=base/.*\.pb\.cc@-g0
Bu, şunlarla eşleşecek:
base
adlı dizinde .pb.cc
dosyası oluşturun.
Bu seçenek birden çok kez kullanılabilir.
Bu seçenek, kullanılan derleme modundan bağımsız olarak uygulanır. Örneğin bir paydaşın
--compilation_mode=opt
ile derlemek ve bazılarını seçerek derlemek
daha güçlü optimizasyonun açık olduğu veya optimizasyonun devre dışı olduğu dosyalar.
Uyarı: Bazı dosyalar hata ayıklama sembolleri kullanılarak seçmeli olarak derlenmişse simgeler
sırasında çıkarılabilir. Bu durum, performansı
azaltmak için
--strip=never
Söz dizimi: [+-]regex[,[+-]regex]...@option[,option]...
Nerede
regex
, başına ek gelebilen normal ifade anlamına gelir
kalıpları tanımlamak için +
, tanımlamak için -
ile
modelleri hariç tutun. option
, C++ derleyicisine iletilen rastgele bir seçeneği temsil eder. Bir seçenek ,
içeriyorsa \,
gibi tırnak içine alınmalıdır. Seçenekler @
içerebilir, çünkü yalnızca ilk
@
, normal ifadeleri seçeneklerden ayırmak için kullanılır.
Örnek:
--per_file_copt=//foo:.*\.cc,-//foo:file\.cc@-O0,-fprofile-arcs
komuta -O0
ve -fprofile-arcs
seçeneklerini ekler
file.cc
dışında //foo/
içindeki tüm .cc
dosyalar için C++ derleyici satırı.
--dynamic_mode=mode
Derleme kurallarındaki linkstatic özelliği ile etkileşime geçerek C++ ikili dosyalarının dinamik olarak bağlanıp bağlanmayacağını belirler.
Modlar:
auto
: Platforma bağlı bir moda dönüşür; Linux içindefault
, cygwin içinoff
.default
: Bazel'in dinamik olarak bağlanıp bağlanmayacağını seçmesini sağlar. Daha fazla bilgi için linkstatic işlevine bakın.fully
: Tüm hedefleri dinamik olarak bağlar. Bu, bağlama süresini hızlandırır ve ortaya çıkan ikili dosyaların boyutunu azaltır.off
: Tüm hedefleri çoğunlukla statik modda bağlar.-static
linkopts'te ayarlanırsa hedefler tamamen statik olacak şekilde değişir.
--fission (yes|no|[dbg][,opt][,fastbuild])
C++ hata ayıklama bilgilerini, normalde yazılacağı .o dosyaları yerine özel .dwo dosyalarına yazan Fission'u etkinleştirir. Bu, 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 için yararlıdır
Ayarlar'da devre dışı bırakabilirsiniz. yes
olarak ayarlandığında Fisyon etkinleştirilir
bunu kabullenmek de önemlidir. no
olarak ayarlandığında Fisyon devre dışı bırakılır
bunu kabullenmek de önemlidir. Varsayılan değer no
'tir.
--force_ignore_dash_static
Bu işaret ayarlanırsa-static
cc_*
kural BUILD dosyası yoksayıldı. Bu, yalnızca C++ sertleştirme derlemeleri için bir geçici çözüm olarak tasarlanmıştır.
--[no]force_pic
Etkinleştirilirse tüm C++ derlemeleri konumdan bağımsız kod ("-fPIC") oluşturur, bağlantılar PIC olmayan kitaplıklar yerine önceden derlenmiş PIC kitaplıklarını tercih eder ve bağlantılar konumdan bağımsız yürütülebilir dosyalar ("-pie") oluşturur. Varsayılan olarak devre dışıdır.
--android_resource_shrinking
android_binary kuralları için kaynak küçültme işleminin yapılıp yapılmayacağını seçer. Şunun için varsayılanı ayarlar: shrink_resources özelliğini açık konuma getirin android_binary kuralları; daha fazla bilgi için bu kuralın dokümanlarına bakın. Varsayılan olarak kapalıdır.
--custom_malloc=malloc-library-target
Belirtildiğinde, varsayılan değeri kullanan hedefler de dahil olmak üzere tüm malloc="target"
özelliklerini geçersiz kılarak her zaman belirtilen malloc uygulamasını kullanın (malloc
belirtilmez).
--crosstool_top=label
Bu seçenek, derleme sırasında tüm C++ derlemeleri için kullanılacak çapraz araç derleyici paketinin konumunu belirtir. Bazel bunun için
konumunu otomatik olarak belirlemek için kullanır ve bunu
--compiler
için ayarlar.
--host_crosstool_top=label
Belirtilmezse Bazel derlemek için --crosstool_top
değerini kullanır
kodu (ör. derleme sırasında çalıştırılan araçlar) kullanabilirsiniz. Bu işaretin temel amacı, çapraz derlemeyi etkinleştirmektir.
--apple_crosstool_top=label
C/C++ kurallarını objc*, ios* ve apple* kurallarının geçişli deps
alanında derlemek için kullanılacak çapraz araç. Bu işaret, bu hedefler için --crosstool_top
değerinin üzerine yazar.
--android_crosstool_top=label
Geçişli deps
içinde C/C++ kuralları derlemek için kullanılacak çapraz araç
android_binary
kural. Bu, derlemedeki diğer hedefler için farklı bir çapraz araç gerekiyorsa yararlıdır. Varsayılan olarak, WORKSPACE dosyasında android_ndk_repository
kuralı tarafından oluşturulan çapraz araç kullanılır.
Ayrıca bkz. --android_platforms
.
--compiler=version
Bu seçenek, C/C++ derleyici sürümünü (gcc-4.1.0
gibi) belirtir
derleme işlemi sırasında ikili programların derlenmesi için kullanılır. Şunu istiyorsanız:
oluşturmak için öncelikle bir CROSSTOOL dosyası kullanmanız gerekir
belirtiliyor.
--android_sdk=label
Kullanımdan kaldırıldı. Bu doğrudan belirtilmemelidir.
Bu seçenek, Android SDK/platform araç zincirini belirtir. ve Android'le ilgili her türlü derleme için kullanılacak Android çalışma zamanı kitaplığı tıklayın.
WORKSPACE dosyasında bir android_sdk_repository
kural tanımlanırsa Android SDK otomatik olarak seçilir.
--java_toolchain=label
Bu seçenek, Java'yı derlemek için kullanılan java_toolchain etiketini belirtir kaynak dosyalar.
--host_java_toolchain=label
Belirtilmemişse bazel, derleme sırasında çalıştırılan araçlar gibi exec yapılandırmasında kodu derlemek için --java_toolchain
değerini kullanır. Bu işaretin temel amacı, çapraz derlemeyi etkinleştirmektir.
--javabase=(label)
Bu seçenek, bazel run, bazel test ve java_binary
ile java_test
kurallarına göre derlenen Java ikili dosyaları için kullanılacak temel Java yüklemesinin etiketini belirler. JAVABASE
ve JAVA
"Yap" değişkenleri bu seçenekten türetilir.
--host_javabase=label
Bu seçenek, yönetici yapılandırmasında kullanılacak temel Java yüklemesinin etiketini ayarlar Örneğin, JavaBuilder ve Singlejar gibi ana bilgisayar derleme araçları için kullanılabilir.
Bu seçenek, Java'yı derlemek için kullanılan Java derleyicisini seçmez.
kaynak dosyalar. Derleyici, Search Ads 360'ta bulunan
--java_toolchain
seçeneği gösterilir.
Yürütme stratejisi
Bu seçenekler, Bazel'in derlemeyi nasıl yürüteceğini etkiler. Bunların çıkış dosyaları üzerinde önemli bir etkisi olmamalıdır oluşturmamıza yardımcı olur. Bunların temel etkisi genellikle anlamına gelir.
--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ğerin desteği sonlandırılmıştır. Lütfen bunun yerinelocal
sütunlarını kullanın.sandboxed
, komutların yerel makinedeki bir korumalı alan içinde yürütülmesine neden olur. Bu, tüm giriş dosyalarının, veri bağımlılıklarının ve araçlarının doğrudan bağımlılıklarısrcs
,data
vetools
özelliklerindedir. Bazel, korumalı alan yürütmeyi destekleyen sistemlerde varsayılan olarak yerel korumalı alanı etkinleştirir.local
, komutların yerel alt işlem olarak yürütülmesine neden olur.worker
, varsa kalıcı bir işleyici kullanılarak komutların yürütülmesine neden olur.docker
, komutların yerel makinedeki bir Docker korumalı alanında 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 seçenek yalnızca 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 eder. --spawn_strategy (ve Genrule kısaltması içeren --genrule_strategy) seçeneğini kısaltma bazında geçersiz kılar. Görüntüleyin --spawn_strategy, desteklenen ve etkilerini konuşacağız.
--strategy_regexp=<filter,filter,...>=<strategy>
Bu seçenek, açıklamaları olan komutları yürütmek için hangi stratejinin kullanılması gerektiğini belirtir
belirli bir regex_filter
ile eşleşiyor. Görüntüleyin
Ayrıntılı bilgi için --per_file_copt
regex_filter eşleştirmede bulunmayı unutmayın. Görüntüleyin
--spawn_strategy, desteklenen
ve etkilerini konuşacağız.
Açıklamayla eşleşen son regex_filter
kullanılır. Bu seçenek,
diğer işaretleri de kullanabilirsiniz.
- Örnek:
--strategy_regexp=//foo.*\\.cc,-//foo/bar=local
, açıklamaları //foo.*.cc ile eşleşiyorsa ancak //foo/bar ile eşleşmiyorsalocal
stratejisini kullanarak işlemleri çalıştırır. - Örnek:
--strategy_regexp='Compiling.*/bar=local' --strategy_regexp=Compiling=sandboxed
"//foo/bar/baz derleniyor" komutunusandboxed
stratejisiyle çalıştırır ancak sırayı tersine çevirereklocal
ile çalıştırır. - Örnek:
--strategy_regexp='Compiling.*/bar=local,sandboxed'
,local
stratejisiyle "//foo/bar/baz derleniyor" komutunu çalıştırır ve başarısız olursasandboxed
stratejisine geçer.
--genrule_strategy=strategy
Bu, --strategy=Genrule=strategy
için kullanımdan kaldırılmış bir kısaltmadır.
--jobs=n
(-j)
Bir tamsayı bağımsız değişkeni alan bu seçenek, sırasında eş zamanlı olarak yürütülmesi gereken işlerin sayısını yürütme aşamasını ele alacağız.
--progress_report_interval=n
Bazel, dahil olmayan işlerle ilgili periyodik olarak bir ilerleme raporu yazdırır.
bitmiş olmalıdır (uzun süren testler gibi). Bu seçenek, raporlama sıklığını belirler. İlerleme durumu n
saniyede bir yazdırılır.
Varsayılan değer 0'dır. Bu, artımlı algoritma anlamına gelir: ilk rapor 10 saniye sonra, 30 saniye sonra ve sonra bu ilerleme dakikada bir raporlanıyor.
Bazel,
--curses
, ilerleme durumu her saniye raporlanıyor.
--local_{ram,cpu}_resources resources or resource expression
Bu seçenekler, Bazel'in yerel olarak çalıştırılacak derleme ve test etkinliklerini planlarken dikkate alabileceği yerel kaynak miktarını (MB cinsinden RAM ve mantıksal CPU çekirdeği sayısı) belirtir. Bu kararlar
İsteğe bağlı olarak, bir tam sayı veya anahtar kelime (HOST_RAM veya HOST_CPUS) ve ardından [-|*
kayıp]
gelir
(örneğin, --local_cpu_resources=2
, --local_ram_resources=HOST_RAM*.5
,
--local_cpu_resources=HOST_CPUS-1
) tıklayın.
İşaretler bağımsızdır; biri veya ikisi birden ayarlanmış olabilir. Bazel, varsayılan olarak RAM miktarını ve CPU çekirdek sayısını doğrudan yerel sistemin yapılandırmasından tahmin eder.
--[no]build_runfile_links
Varsayılan olarak etkin olan bu seçenek,
testler ve ikili programlar için sembolik bağlantılar çıkış dizininde oluşturulmalıdır.
--nobuild_runfile_links
kullanmak, tüm hedeflerin derlenip derlenmediğini doğrulamak için çalıştırma dosyası ağaçlarını oluşturma yükü olmadan faydalı olabilir.
Testler (veya uygulamalar) yürütüldüğünde çalışma zamanı verileri
bağımlılıkları tek bir yerde toplanır. Bazel'in çıkış ağacında bu "çalıştırma dosyaları" ağacı genellikle ilgili ikili dosyanın veya testin kardeşi olarak köklenir.
Test çalıştırma sırasında, $TEST_SRCDIR/workspace/packagename/filename
biçimindeki yollar kullanılarak çalışma dosyalarına erişilebilir.
Çalıştırma dosyası ağacı, testlerin, açıklanmış bağımlılıklarının olduğu tüm dosyalara erişmesini sağlar ve başka hiçbir şeye erişmesine izin vermez. Ölçüt
Runfiles ağacı varsayılan olarak
gerekli dosyalara sembolik bağlantılar sağlar. Bağlantı grubu büyüdükçe,
maliyeti olduğunu ve bazı büyük derlemelerde
genel derleme süresine önemli ölçüde katkıda bulunur.
her test (veya uygulama) kendi çalıştırma dosyası ağacını gerektirir.
--[no]build_runfile_manifests
Varsayılan olarak etkinleştirilen bu seçenek, runfiles manifestlerinin
çıkış ağacına yazılmalıdır.
Devre dışı bırakıldığında --nobuild_runfile_links
.
Çalışma dosyaları ağaçları bunların bellek içi manifestlerden uzaktan oluşturulması gerekir.
--[no]discard_analysis_cache
Bu seçenek etkinleştirildiğinde Bazel, analiz önbelleğini yürütme başlamadan hemen önce atar. Böylece yürütme aşaması için ek bellek (yaklaşık %10) ayrılır. Dezavantajı, daha fazla artımlı derlemenin daha yavaş olmasıdır. Şu kaynakları da inceleyin bellek tasarrufu moduna sahip olmayabilir.
--[no]keep_going
(-k)
GNU Make'da olduğu gibi, bir derlemenin yürütme aşaması ilk hatasıyla karşılaşıldı. Bazen hatalarla karşılaşsanız bile mümkün olduğunca fazla derleme yapmayı denemek faydalı olabilir. Bu seçenek bu davranışı etkinleştirir ve belirtildiğinde derleme, önkoşulları başarıyla oluşturulmuş her hedefi oluşturmaya çalışır ancak hataları yoksayar.
Bu seçenek genellikle planlama aşamasının yürütülme aşamasıyla
aynı zamanda analiz aşamasını da etkiler: birkaç hedef
bir derleme komutunda belirtilir ancak yalnızca bazıları
başarılı bir şekilde analiz edilirse derleme bir hatayla
--keep_going
belirtilmediği sürece
devam ederek yürütme aşamasına geçer ve yalnızca projenin hedefleri
başarılı bir şekilde analiz edildi.
--[no]use_ijars
Bu seçenek, java_library
hedeflerin
derlendi. Çıktıyı kullanmak yerine
Bağımlı derleme için java_library
java_library
hedef, Bazel arayüz jar'ları oluşturacak
bu bilgileri yalnızca gizli olmayan üyelerin (herkese açık,
varsayılan (paket) erişim yöntemleri ve alanları) erişmenize ve
arayüz jar'larını kullanır. Bu sayede, yalnızca bir sınıfın yöntem gövdelerinde veya özel üyelerinde değişiklik yapıldığında yeniden derlemeyi önleyebilirsiniz.
--[no]interface_shared_objects
Bu seçenek, arayüz paylaşılan nesneleri etkinleştirir. Bu işlem ikili programları ve diğer paylaşılan kitaplıklar, paylaşılan bir nesnenin arayüzüne bağlıdır. daha doğru sonuçlar verir. Yalnızca uygulama değiştiğinde, Bazel değiştirilen paylaşılan kitaplığa bağlı hedeflerin yeniden oluşturulmasını önleyebilir gerekmeyebilir.
Çıkış seçimi
Bu seçenekler neyin oluşturulacağını veya test edileceğini belirler.
--[no]build
Bu seçenek, derlemenin yürütme aşamasının gerçekleştirilmesine neden olur; bu varsayılan olarak açıktır. Bu seçenek devre dışı bırakı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, herhangi bir şey oluşturmadan BUILD dosyalarını doğrulamak ve girişlerdeki hataları tespit etmek için yararlı olabilir.
--[no]build_tests_only
Belirtilirse Bazel, yalnızca *_test
öğesini çalıştırmak için gerekli olanı oluşturur
ve özellikleri nedeniyle filtrelenmemiş test_suite
kural
size [beden]
zaman aşımı,
tag veya
dil.
Belirtilirse Bazel, komut satırında belirtilen diğer hedefleri yoksayar.
Bu seçenek varsayılan olarak devre dışıdır ve Bazel, testten filtrelenen *_test
ve test_suite
kuralları da dahil olmak üzere istenen her şeyi oluşturur. Bu,
bazel test --build_tests_only foo/...
tüm derlemeleri algılamayabilir
foo
ağacında kesintiler var.
--[no]check_up_to_date
Bu seçenek, Bazel'in derleme gerçekleştirmemesine neden olur ancak yalnızca belirtilen tüm hedeflerin güncel olup olmadığını kontrol eder. Öyleyse, derleme normal şekilde başarıyla tamamlanır. Ancak, güncel olmayan dosyalar derlenmez, bunun yerine bir hata bildirilir ve derleme başarısız olur. Bu seçenek, bir derlemenin sahip olduğu bir kaynak düzenlemesinden daha yakın zamanda gerçekleştirilmiş (örneğin, kontrolleri) gerçekleştirmenize yardımcı olur.
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, özellikle IDE'lerde kaynak dosyaları kontrol eden söz dizimi (örneğin, tek bir tespit etmek için kaynak dosyaya bağlı olan bir hedef belirler. test döngüsüne dahil edin. Bu bağımsız değişken, işaret olmayan bağımsız değişkenler yorumlanır: Her bağımsız değişken bir dosya hedef etiketi veya düz dosya adı, mevcut çalışmaya göre dizini ve her kaynak dosya adına bağlı tek bir kural derlenmiştir. C++ ve Java kaynaklarında, aynı dil alanındaki kurallar tercih edilir. Örneğin, aynı tercihe sahip birden çok kural vardır. Bu kural, BUILD dosyası seçildi. Kaynak dosyaya atıfta bulunmayan, açıkça adlandırılmış bir hedef kalıbı hataya neden olur.
--save_temps
--save_temps
seçeneği, derleyiciden geçici çıkışların
kaydedildi. Bunlar arasında .s dosyaları (derleyici kodu), .i (önceden işlenmiş C) ve .ii dosyaları yer alır.
(önceden işlenmiş C++) dosyaları. Bu çıkışlar hata ayıklamada genellikle faydalıdır. Sıcaklıklar yalnızca
komut satırında belirtilen hedef kümesi için oluşturulur.
--save_temps
işareti şu anda yalnızca cc_* kuralları için çalışmaktadır.
Bazel'in ek çıkış dosyalarının konumunu yazdırdığından emin olmak için
--show_result n
ayar yeterince yüksek.
--build_tag_filters=tag[,tag]*
Belirtilirse Bazel, yalnızca en az bir gerekli etikete sahip hedefleri oluşturur (herhangi biri belirtilmişse) ve hiçbir hariç tutulan etiket içermiyor. Etiket filtresi oluşturma işlemi, etiket anahtar kelimelerinin virgülle ayrılmış listesi olarak belirtilir ve isteğe bağlı olarak hariç tutulan etiketleri belirtmek için "-" işareti eklenir. Zorunlu etiketlerin önünde "+" işareti de bulunabilir.
Bazel, testleri çalıştırırken bu filtreyle eşleşmese bile derlenen ve çalıştırılan test hedefleri için --build_tag_filters
değerini yoksayar. Bunları oluşturmaktan kaçınmak için, filtre
--test_tag_filters
kullanarak veya açık bir şekilde hariç tutarak test hedeflerini test edin.
--test_size_filters=size[,size]*
Belirtilirse Bazel, öğeyi test etmek (veya --build_tests_only
yalnızca belirtilen boyuttaki hedefleri test edin. 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, hariç tutulan test boyutlarını belirtmek için "-" işareti eklenir. Örneğin,
% bazel test --test_size_filters=small,medium //foo:all
ve
% bazel test --test_size_filters=-large,-enormous //foo:all
yalnızca //foo içindeki küçük ve orta boyutlu testleri test eder.
Varsayılan olarak test boyutu filtreleme uygulanmaz.
--test_timeout_filters=timeout[,timeout]*
Belirtilirse Bazel, öğeyi test etmek (veya --build_tests_only
belirtilmişse) yalnızca belirtilen zaman aşımına sahip hedefleri test edin. Zaman aşımı filtresini test edin
izin verilen test zaman aşımı değerlerinin virgülle ayrılmış listesi (kısa,
orta, uzun veya sonsuz), isteğe bağlı olarak öncesinde "-" belirtmek için kullanılan işaret
test zaman aşımları hariç tutuldu. Örnek söz dizimi için --test_size_filters bölümüne bakın.
Varsayılan olarak, test zaman aşımı filtrelemesi uygulanmaz.
--test_tag_filters=tag[,tag]*
Belirtiliyse Bazel yalnızca en az bir zorunlu etiketi (varsa) olan ve hariç tutulan etiketi olmayan test hedeflerini test eder (veya --build_tests_only
de belirtilmişse derleyebilir). Etiketi test et
filtre, isteğe bağlı olarak virgülle ayrılmış anahtar kelimeler listesi olarak belirtilir
başına '-' eklenir hariç tutulan etiketleri belirtmek için kullanılan işaret. Zorunlu etiketlerin önünde "+" işareti de bulunabilir.
Örneğin,
% bazel test --test_tag_filters=performance,stress,-flaky //myproject:all
performance
veya
stress
etiketi. Ancak flaky
etiketiyle etiketlenmemişler.
Test etiketi filtreleme varsayılan olarak uygulanmaz. Testin size
ve local
etiketlerine göre de bu şekilde filtreleme yapabileceğinizi unutmayın.
--test_lang_filters=string[,string]*
Test kuralının adlarına atıfta bulunan dizelerin virgülle ayrılmış listesini belirtir
sınıflar. foo_test
kural sınıfına başvurmak için "foo" dizesini kullanın. Bazel
yalnızca test (veya --build_tests_only
belirtilmişse derleme)
hedeflerinden emin olun. Bu hedefleri hariç tutmak için "-foo" dizesini kullanın. Örneğin,
% bazel test --test_lang_filters=foo,bar //baz/...
yalnızca //baz/...
içinde foo_test
veya bar_test
örneği olan hedefleri test eder.
% bazel test --test_lang_filters=-foo,-bar //baz/...
foo_test
ve bar_test
örnekleri hariç //baz/...
'teki tüm hedefleri test eder.
--test_filter=filter-expression
Test çalıştırıcısı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 oluşturulur ancak ifade yalnızca bazıları yürütülebilir; bazı durumlarda, nasıl çalıştırılacağını da görebilirsiniz.
filter-expression değerinin yorumu, testi çalıştırmaktan sorumlu test çerçevesine bağlıdır. Bir küre olabilir,
alt dize veya regexp'i seçin. --test_filter
kolaylık sağlar
farklı --test_arg
filtre bağımsız değişkenlerini geçirerek
ancak tüm çerçeveler bu sistemi desteklemez.
Ayrıntı düzeyi
Bu seçenekler Bazel çıkışının ayrıntı düzeyini kontrol eder. ya da ek günlük dosyalarına bağlayabilirsiniz.
--explain=logfile
Dosya adı bağımsız değişkeni gerektiren bu seçenek,
bazel build
ekibinin yürütme aşamasındaki bağımlılık denetleyicisini
her derleme adımı için neden yürütüldüğünü ya da
olduğundan emin olun. Açıklama yazılmış
logfile konumuna ekleyin.
Beklenmedik yeniden oluşturmalarla karşılaşıyorsanız bu seçenek aşağıdakileri yapmanıza yardımcı olabilir:
bunun nedenini anlayabilirsiniz. .bazelrc
cihazınıza ekleyin
sonraki tüm derlemeler için günlük kaydı yapılır ve ardından günlüğün
beklenmedik şekilde yürütüldüğü bir yürütme adımı görebilirsiniz. Bu seçenek, performans açısından küçük bir cezaya neden olabilir. Bu nedenle, artık gerekli olmadığında bu seçeneği kaldırabilirsiniz.
--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ı yeniden oluşturulur. Çünkü komut derlediyseniz açıklama dosyasındaki çıkış yeni komutun tüm ayrıntılarını içermelidir (en azından komutlarında kullanılabilir).
Bu seçeneğin kullanılması,
ve bu hatanın neden olduğu
--explain
--explain
etkinleştirilmezse --verbose_explanations
'un hiçbir etkisi olmaz.
--profile=file
Dosya adı bağımsız değişkeni alan bu seçenek, Bazel'in profil oluşturma verilerini bir dosyaya yazmasına neden olur. Ardından veriler, bazel analyze-profile
komutu kullanılarak analiz edilebilir veya ayrıştırılabilir. Build profili şu durumlarda faydalı olabilir:
öğrendiğiniz için Bazel'ın build
komutunun zamanının nerede geçtiğini anlamaya çalışın.
--[no]show_loading_progress
Bu seçenek, Bazel'in paket yükleme ilerlemesinin çıktısını almasına neden olur mesaj. Politika devre dışı bırakılırsa mesajlar gösterilmez.
--[no]show_progress
Bu seçenek, ilerleme mesajlarının gösterilmesine neden olur ve varsayılan olarak etkindir. Devre dışı bırakıldığında ilerleme durumu mesajları engellenir.
--show_progress_rate_limit=n
Bu seçenek, bazel'in n
saniyede en fazla bir ilerleme mesajı göstermesine neden olur.
burada n reel bir sayıdır.
Bu seçeneğin varsayılan değeri 0,02'dir. Yani bazel, ilerleme mesajlarını 0,02 saniyede bir mesajla sınırlandırır.
--show_result=n
Bu seçenek, bazel build
komutunun sonunda 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 belirten bir mesaj ve güncellendiyse hedefin oluşturduğu çıkış dosyalarının listesini yazdırır. Birden fazla
hedef belirtildiğinde, sonuç bilgileri görüntülenmez.
Sonuç bilgileri tek bir hedefin veya birkaç hedefin derlemeleri için yararlı olsa da büyük derlemeler (ör. üst düzey bir proje ağacının tamamı) için bu bilgiler çok fazla olabilir ve dikkat dağıtıcı olabilir. Bu seçenek, bu bilgilerin kontrol edilmesine olanak tanır. --show_result
, tam sonuç bilgilerinin basılması gereken maksimum hedef sayısı olan bir tam sayı bağımsız değişkeni alır. Varsayılan değer 1'dir. Bu eşiğin üzerinde, bağımsız hedefler için sonuç bilgisi gösterilmez. Bu nedenle sıfır, 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, küçük bir hedef grubu (ör. derleme-düzenleme-test döngüsü sırasında) ve büyük bir hedef grubu (ör. yeni bir çalışma alanı oluştururken veya geriye dönük testler çalıştırırken) arasında düzenli olarak geçiş yapıyorsa aradaki bir değeri seçmek isteyebilir. İlk durumda sonuç bilgileri çok yararlıyken ikinci durumda daha az yararlıdır. Tüm seçeneklerde olduğu gibi bu, .bazelrc
dosyası aracılığıyla dolaylı olarak belirtilebilir.
Dosyalar, oluşturulan yürütülebilir dosyaları çalıştırmak için dosya adını kabuğa kopyalayıp yapıştırmayı kolaylaştıracak şekilde yazdırılır. Her hedef için "güncel" veya "başarısız" mesajları, derlemeyi yönlendiren komut dosyaları tarafından kolayca ayrıştırılabilir.
--sandbox_debug
Bu seçenek, Bazel'in işlem yürütmek için korumalı alan kullanırken ek hata ayıklama bilgileri yazdırmasına neden olur. Bu seçenek, korumalı alan dizinlerini de korur. Böylece dosyalar, işlemlere görünür olur. incelenebilir.
--subcommands
(-s
)
Bu seçenek, Bazel'in yürütme aşamasının her komutu yürütmeden önce komut satırının tamamı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ğuyla uyumlu bir söz diziminde yazdırılır.
Böylece kolayca kopyalanıp bir kabuk komut istemine yapıştırılabilirler.
(Kavrayıcı parantezler, kabuğunuzu cd
ve exec
çağrılarına karşı korumak için sağlanmıştır; bunları kopyaladığınızdan emin olun!)
Ancak bazı komutlar (ör. sembolik bağlantı ağaçları oluşturma) Bazel'de dahili olarak uygulanır. Bunlar için görüntülenecek komut satırı yoktur.
--subcommands=pretty_print
, yazdırmaya iletilebilir
komutun bağımsız değişkenlerini tek bir satır yerine bir liste şeklinde düzenleyebilirsiniz. Bu,
uzun komut satırlarının daha okunabilir olmasına yardımcı olur.
Ayrıca aşağıdaki --verbose_failures bölümüne de bakın.
Alt komutları araç dostu biçimde bir dosyaya 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 komut satırının tamamını yazdırmasına neden olur komutunu çalıştırın. Bu, bir projede hata ayıklamak için başarısız oldu.
Başarısız komutlar, Bourne kabuğuyla uyumlu bir söz diziminde yazdırılır. kopyalama ve yapıştırma işlemleri için kullanılır.
Çalışma alanı durumu
Bazel ile derlenmiş ikili dosyaları "damgalamak" için bu seçenekleri kullanın: ikili dosyalara kaynak denetimi düzeltmesi veya Workspace ile ilgili diğer bilgiler gibi ek bilgiler yerleştirmek için. Tekliflerinizi otomatikleştirmek ve optimize etmek için
Bu mekanizmayı, stamp
özelliğini destekleyen kurallarla (örneğin,
genrule
, cc_binary
ve diğerleri.
--workspace_status_command=program
Bu işaret, Bazel'in her derlemeden önce çalıştırdığı bir ikili programı belirtmenizi sağlar. Program, çalışma alanının durumuyla ilgili bilgileri (ör. mevcut kaynak denetimi düzeltmesi) bildirebilir.
İşaretin değeri, yerel bir programın yolu olmalıdır. Linux/macOS'te bu, yürütülebilir herhangi bir dosya olabilir. Windows'da bu yerel bir ikili program, genellikle ".exe", ".bat" veya ".cmd" olmalıdır dosyası olarak kaydedebilirsiniz.
Program, standart çıkışa sıfır veya daha fazla anahtar/değer çifti (her satırda bir giriş) yazdırmalı ve ardından sıfır değerini döndürerek çıkmalıdır (aksi takdirde derleme başarısız olur). Anahtar adları herhangi bir şey olabilir, ancak büyük harf ve alt çizgi kullanın. Anahtar adından sonraki ilk boşluk, onu değer. Değer, satırın geri kalanıdır (ek boşluklar dahil). Ne önemli ne de değer birden çok satıra yayılabilir. Anahtarlar yinelenmemelidir.
Bazel, anahtarları iki pakete ayırır: "stabil" "değişken" olabilir. ("Kararlı" ve "değişken" adları biraz sezgisel değildir. Bu nedenle, bunlar hakkında fazla düşünmeyin.)
Daha sonra Bazel, anahtar/değer çiftlerini iki dosyaya yazar:
bazel-out/stable-status.txt
anahtar adınınSTABLE_
ile başladığı tüm anahtarları ve değerleri içerirbazel-out/volatile-status.txt
geri kalan anahtarları ve bunların değerlerini içerir
Sözleşme:
"Kararlı" anahtarların değerleri mümkünse nadiren değişmelidir. Projedeki
bazel-out/stable-status.txt
değiştirmek isterseniz Bazel, bu değişikliklere bağlı işlemleri geçersiz kılar. Başka bir deyişle, sabit bir anahtarın değeri değişirse Bazel, damgalanmış işlemleri yeniden çalıştırır. Bu nedenle, kararlı durum zaman damgaları gibi öğeler içermemelidir. Çünkü bunlar her zaman değişir ve Bazel'in her derlemede damgalanmış işlemleri yeniden çalıştırmasına neden olur.Bazel her zaman aşağıdaki kararlı anahtarları döndürür:
BUILD_EMBED_LABEL
:--embed_label
değerinin değeriBUILD_HOST
: Bazel'in çalıştığı ana makinenin adıBUILD_USER
: Bazel'in çalıştığı kullanıcının adı
"değişken" tuşlar değerler sık sık değişebilir. Bazel, zaman damgalarında olduğu gibi bunların her zaman değişmesini bekler ve
bazel-out/volatile-status.txt
dosyasını gerektiği gibi günceller. Ancak, damgalanmış işlemlerin her zaman yeniden çalıştırılmasını önlemek için Bazel, değişken dosyanın hiç değişmediğini varsayar. Başka bir deyişle, değişken durum dosyası, içeriği değiştirildiğinde, Bazel ona bağlı işlemleri geçersiz kılmaz. İşlemlere ilişkin diğer girişler değiştirildikten sonra Bazel bu işlemi yeniden çalıştırır ve işlem, güncellenmiş değişken Ancak 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 Epoch'tan itibaren saniye cinsinden derleme süresi (değer /System.currentTimeMillis()
bölü bin)FORMATTED_DATE
: derlemenin zamanı UTC biçimindeyyyy MMM d HH mm ss EEE
(ör. 2023 Haz 2 01 44 29 Cuma) olarak biçimlendirilir.
Linux/macOS'te true
hiçbir şey yapmadığı, başarılı bir şekilde (sıfırla çıkar) sona erdiği ve hiçbir çıkış yazdırmadığı için --workspace_status_command=/bin/true
ile Workspace durumunun alınmasını devre dışı bırakabilirsiniz. Windows'da MSYS'nin true.exe
yolunu geçirebilirsiniz
aynı etkiyi yaratır.
Çalışma alanı durum komutu herhangi bir nedenle başarısız olursa (sıfır dışında çı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
ve kararlı durum dosyası ile geçin
dosyası, STABLE satırlarını içerir. Değişken durum dosyası ise geri kalan satırları içerir.
--[no]stamp
Bu seçenek, stamp
kural özelliğiyle birlikte derleme bilgilerinin ikili dosyalar içine yerleştirilip yerleştirilmeyeceğini kontrol eder.
Damgalama, stamp
özelliği kullanılarak kural bazında açıkça etkinleştirilebilir veya devre dışı bırakılabilir. Ayrıntılı bilgi için lütfen Build Ansiklopedi'yi inceleyin. Bir kural stamp = -1
değerini (*_binary
kuralları için varsayılan değer) ayarlarsa bu seçenek, damga basma özelliğinin etkin olup olmadığını belirler.
Bazel, bu seçenekten veya stamp
özelliğinden bağımsız olarak exec yapılandırması için derlenen ikili dosyaları hiçbir zaman damgalamaz. stamp =
0
değerini (*_test
kuralları için varsayılan) ayarlayan kurallar için damgalama
--[no]stamp
. --stamp
belirtildiğinde, bağımlılıkları değişmemiş hedeflerin yeniden oluşturulması zorunlu kılınmaz.
Giriş değişkenliğini azalttığı ve derleme önbelleğe alma işlemini en üst düzeye çıkardığı için --nostamp
ayarı genellikle derleme performansı için istenilen bir ayardır.
Platform
Derlemelerin nasıl çalıştığını yapılandıran ana makine ve hedef platformları kontrol etmek ve Bazel kurallarının hangi yürütme platformlarını ve araç zincirlerini kullanabileceğini kontrol etmek için bu seçenekleri kullanın.
Platformlar ve Araçlar hakkında daha fazla bilgi edinin.
--platforms=labels
Uygulama için hedef platformları açıklayan platform kurallarının etiketleri komutuna ekleyin.
--host_platform=label
Ana makine sistemini açıklayan platform kuralının etiketi.
--extra_execution_platforms=labels
İşlemleri çalıştırmak için yürütme platformları olarak kullanılabilen platformlar. Platformlar, tam hedefe göre veya hedef kalıbı olarak belirtilebilir. Bu platformların, WORKSPACE dosyasında bildirilenlerden önce register_execution_platforms(). Bu seçenek, öncelik sırasına göre, platformların virgülle ayrılmış listesini kabul eder. İşaret birden fazla kez geçilirse en son geçersiz kılma işlemleri.
--extra_toolchains=labels
Araç zinciri çözümlemesi sırasında dikkate alınacak araç zinciri kurallarıdır. Araç zincirleri, tam hedefe göre veya hedef kalıbı olarak belirtilebilir. Bu araç zincirleri, WORKSPACE dosyasında bildirilenlerden önce register_toolchains() işlevini kullanın.
--toolchain_resolution_debug=regex
Zincir araç türü normal ifadeyle eşleşirse zincir araçları bulurken hata ayıklama bilgilerini yazdırın. Birden fazla normal ifade virgülle ayrılabilir. Normal ifade, başında -
kullanılarak reddedilebilir. Bu, geliştiricilere yardımcı olabilir
eksik araç zincirleri nedeniyle hata ayıklama hataları içeren Bazel veya Starlark kurallarının sayısı.
Ç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 bir kolaylık işareti. Daha fazla daha fazla bilgi için Starlark Yapılandırmaları
--symlink_prefix=string
Oluşturulan kolaylık sembollerinin ön ekini değiştirir. Sembolik bağlantı ön ekinin varsayılan değeri bazel-
'tir. 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 ancak derlemenin yine de başarılı olduğu kabul edilir. Özellikle, salt okuma veya yazma izniniz olmayan bir dizinde derleme yapmanıza olanak tanır. Bilgilendirme amaçlı yazdırılan tüm yollar bir derlemenin sonundaki mesajlar yalnızca sembolik bağlantılar beklenen değeri işaret ediyorsa konum; Yani, bu belgelerin doğruluğuna veya sembolik bağlantılara güvenemeyebilirsiniz.
Bu seçeneğin bazı yaygın değerleri:
Sembolik bağlantı oluşturmayı engelleme:
--symlink_prefix=/
, Bazel'ınbazel-out
ve sembolleri de dahil olmak üzere herhangi bir sembolik bağlantı oluşturunbazel-<workspace>
sembolik bağlantılardır. Simge bağlantısı oluşturmayı tamamen engellemek için bu seçeneği kullanın.Karmaşıklığı azaltın:
--symlink_prefix=.bazel/
, Bazel'in gizli bir dizin.bazel
içinde bulunanbin
(vb.) adlı sembolik bağlantılar
--platform_suffix=string
Yapılandırmanın kısa adına, çıkış dizininde bulabilirsiniz. Bu seçeneğin farklı değerlere ayarlanması, dosyaları farklı dizinlere de erişebilir. Örneğin, Google Cloud'un kullanılabilmesi için ya da çıkış dosyalarını korumak için birbirlerinin çıkış dosyalarını engellemelerini kullanabilirsiniz.
--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ım için tasarlanmamıştır eksiksiz olması için belgelenir sake.
--starlark_cpu_profile=_file_
Değeri dosyanın adı olan bu işaret, Bazel'in tüm Starlark iş parçacıklarının CPU kullanımıyla ilgili istatistikler, ve profili pprof biçiminde yazın .
Aynı işleve sahip Starlark fonksiyonlarını tanımlamak için aşırı hesaplama nedeniyle yüklemeyi ve analizi yavaşlatabilir. Ö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 pprof
komutlarını deneyin: svg
,
web
ve list
.
Sürümler için Bazel'i kullanma
Bazel hem yazılım mühendisleri tarafından geliştirme döngüsü sırasında hem de sürüm mühendisleri tarafından ikili programları üretime dağıtmak için hazırlanırken kullanılır. Bu bölümde, Bazel kullanan sürüm mühendisleri için ipuçları listesi verilmiştir.
Önemli seçenekler
Sürüm derlemeleri için Bazel kullanılırken diğer komut dosyalarıyla aynı sorunlar ortaya çıkıyor açıklayacağım. Daha fazla bilgi için bkz. Komut dosyalarından Bazel'i çağırın. Özellikle, aşağıdaki seçenekler kesinlikle önerilir:
Aşağıdaki seçenekler de önemlidir:
--package_path
--symlink_prefix
: Birden fazla yapılandırma için derlemeleri yönetmek amacıyla her derlemeyi "64 bit" ve "32 bit" gibi farklı bir tanımlayıcıyla ayırt etmek yararlı olabilir. Bu seçenekbazel-bin
(vb.) sembolik bağlantılarını ayırt eder.
Test çalıştırma
Bazel ile test oluşturmak ve çalıştırmak için bazel test
yazıp, 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) derleyerek ve önkoşulları derlenir derlenmez *_test
ve test_suite
hedeflerini test ederek eşzamanlı derleme ve test etkinliği gerçekleştirir. Yani test yürütme, derleme işlemiyle iç içe yerleştirilir. Bu genellikle önemli sonuçlar
hız kazanımları.
bazel test
için seçenekler
--cache_test_results=(yes|no|auto)
(-t
)
Bu seçenek "auto" (otomatik) olarak ayarlanırsa Bazel yalnızca aşağıdaki koşullardan biri geçerliyse bir testi yeniden çalıştırır:
- Bazel, testteki veya bağımlılıklarındaki değişiklikleri tespit eder
- Test
external
olarak işaretlenir. --runs_per_test
ile birden fazla test çalıştırması istendi- test başarısız oldu.
"No" (hayır) ise tüm testler koşulsuz olarak yürütülür.
"Evet" ise önbelleğe alma davranışı, test hatalarını ve --runs_per_test
ile test çalıştırma işlemlerini önbelleğe alabilmesi dışında otomatik ile aynı olur.
.bazelrc
dosyalarında bu seçeneği varsayılan olarak etkinleştiren kullanıcılar, belirli bir çalıştırmada varsayılan ayarı geçersiz kılmak için -t
(açık) veya -t-
(kapalı) kısaltmalarını kullanabilir.
--check_tests_up_to_date
Bu seçenek Bazel'a testleri çalıştırmasını değil, yalnızca kontrol edip bildirmesini söyler test sonuçlarını otomatik olarak ekler. Henüz doğrulanmamış testler test sonuçları güncel olmayan kullanıcılar (örneğin, kaynak kodu veya derleme seçenekleri değiştiyse) Bazel, bir hata mesajı ("test sonucu güncel değil"), testin sonucunu "DURUM YOK" (renk çıkışı etkinse kırmızı renkte) gösterilir ve değer değeri sıfır olmayan bir çıkış kodu içerir.
Bu seçenek aynı zamanda
[--check_up_to_date](#check-up-to-date)
davranışı.
Bu seçenek, gönderim öncesi kontroller için yararlı olabilir.
--test_verbose_timeout_warnings
Bu seçenek, bir testin zaman aşımı süresi aşılırsa Bazel'a kullanıcıyı açıkça uyarmasını söyler , testin gerçek yürütme süresinden önemli ölçüde daha uzundur. Test sırasında zaman aşımının güvenilir olmaması ve yüksek zaman aşımını beklenmedik şekilde ortaya çıkan gerçek sorunları gizleyebilir.
Örneğin, normalde bir veya iki dakikada çalışan bir testin zaman aşımı ETERNAL veya LONG (SONSUZ) olmamalıdır.
Bu seçenek, kullanıcıların iyi bir zaman aşımı değeri veya doğruluk kontrolü için mevcut zaman aşımı değerlerini içerir.
--[no]test_keep_going
Varsayılan olarak tüm testler sonuna kadar çalıştırılır. Bu işaret devre dışı bırakılırsa
ancak başarılı olmayan tüm testlerde derleme iptal edilir. Sonraki derleme adımları ve test çağrıları çalıştırılmaz, devam eden çağrılar iptal edilir.
--notest_keep_going
ve --keep_going
öğelerini belirtmeyin.
--flaky_test_attempts=attempts
Bu seçenek, bir testin herhangi bir nedenle başarısız olması durumunda maksimum deneme sayısını belirtir. Başlangıçta başarısız olan ancak sonunda
test özetinde FLAKY
olarak raporlanır. Evet,
bununla birlikte, Bazel çıkış kodunun tanımlanması konusunda iletildiği kabul edilir.
ya da geçilen testlerin toplam sayısını
görmenizi sağlar. İzin verilen tüm denemelerde başarısız olan testler:
bu projenin başarısız olduğu kabul edilir.
Varsayılan olarak (bu seçenek belirtilmediğinde veya
varsayılan), normal testler için yalnızca tek bir denemeye izin verilir ve
flaky
özellik ayarlanmış test kuralları için 3. Tekliflerinizi otomatikleştirmek ve optimize etmek için
maksimum test denemesi sınırını geçersiz kılmak için bir tam sayı değeri. Bazel, sistemin kötüye kullanımını önlemek için en fazla 10 test denemesine izin verir.
--runs_per_test=[regex@]number
Bu seçenek, her bir testin kaç kez çalıştırılacağını belirtir. Tümü test yürütmeleri ayrı testler olarak kabul edilir (yedek işlevsellik her biri için ayrı ayrı uygulanacaktır).
Başarısız çalıştırmalara sahip bir hedefin durumu,
--runs_per_test_detects_flakes
işareti:
- Yoksa başarısız çalıştırmalardan biri, testin tamamının başarısız olmasına neden olur.
- Bu özellik mevcutsa ve aynı parçadaki iki çalıştırma PASS ve FAIL döndürürse test, kararsız durumu alır (başka başarısız çalıştırmalar testin başarısız olmasına neden olmazsa).
Tek bir sayı belirtilirse tüm testler bu sayıda çalıştırılır.
Alternatif olarak, regex@number söz dizimi kullanılarak normal ifade de belirtilebilir. Bu, --runs_per_test
'ün normal ifadeyle eşleşen hedefler üzerindeki etkisini kısıtlar (--runs_per_test=^//pizza:.*@4
, tüm testleri //pizza/
altında 4 kez çalıştırır).
Bu --runs_per_test
biçimi birden çok kez belirtilebilir.
--[no]runs_per_test_detects_flakes
Bu seçenek belirtilirse (varsayılan olarak seçili değildir) Bazel,
parçaları --runs_per_test
tarihine kadar test edin. Tek bir parça için bir veya daha fazla çalıştırma başarısız olursa ve aynı parça için bir veya daha fazla çalıştırma başarılı olursa hedef, işaretle birlikte kararsız olarak kabul edilir. Belirtilmemişse hedef,
durumu hakkında daha fazla bilgi edinin.
--test_summary=output_style
Test sonucu özetinin nasıl görüntülenmesi gerektiğini belirtir.
short
, her testin sonuçlarını ve test başarısız olursa test çıktısını içeren dosyanın adını yazdırır. Bu, varsayılan değerdir.terse
short
gibidir ancak daha kısadır: Yalnızca başarısız olan testlerle ilgili bilgileri yazdırır.detailed
, başarısız olan her test durumunu yazdırır, her test için mevcut olmayabilir. Test çıkış dosyalarının adları atlanır.none
test özetini yazdırmıyor.
--test_output=output_style
Test çıkışının nasıl gösterilmesi gerektiğini belirtir:
summary
her testin başarılı olup olmadığına ilişkin bir özet gösterir başarısız oldu. Başarısız testlerin çıkış günlük dosyası adını da gösterir. Özet üretilirken (derleme sırasında test başladığında, başarılı veya başarısız olduğunda gösterilen basit ilerleme mesajları). Bu, varsayılan davranıştır.errors
, başarısız testlerden birleştirilmiş stdout/stderr çıkışını gönderir test tamamlandıktan hemen sonra stdout'a gönderilebilir. Eş zamanlı testlerden elde edilen test çıktıları birbiriyle aralıklı olarak ilişkilendirilmiş olmamalıdır. Derlemede, yukarıdaki özet çıkışına göre bir özet yazdırır.all
,errors
ile benzer ancak çıktıyı şunun için yazdırıyor: tüm testler dahildir.streamed
, her testten stdout/stderr çıkışını destekler. her zaman hazır.
--java_debug
Bu seçenek, Java testinin Java sanal makinesinin
Testi başlatmadan önce JDWP uyumlu hata ayıklayıcı. Bu seçenek --test_output=streamed
anlamına gelir.
--[no]verbose_test_summary
Bu seçenek varsayılan olarak etkindir. Dolayısıyla test süreleri ve diğer ek
test özetine yazdırılacak bilgiler (ör. test denemeleri) Eğer
--noverbose_test_summary
belirtildi, test özeti şunu yapacak:
test adını, test durumunu ve önbelleğe alınmış test göstergesini içerir ve
mümkün olduğunda 80 karakteri aşmayacak şekilde biçimlendirilmelidir.
--test_tmpdir=path
Yerel olarak çalıştırılan testler için geçici dizini belirtir. Her test, bu dizin içindeki ayrı bir alt dizinde yürütülür. Her bazel test
komutunun başında dizin temizlenir.
Varsayılan olarak bazel bu dizini Bazel çıkış ana dizininin altına yerleştirir.
--test_timeout=seconds
VEYA --test_timeout=seconds,seconds,seconds,seconds
Belirtilen sayıda değerini yeni bir zaman aşımı değeri olarak kaydeder. Yalnızca bir değer sağlanırsa bu değer tüm test zaman aşımı kategorileri için kullanılır.
Alternatif olarak, kısa, orta, uzun ve sonsuz testler için ayrı zaman aşımlarını belirten dört virgülle ayrılmış değer de sağlanabilir (bu sırayla). Her iki biçimde de, test boyutlarının herhangi biri için sıfır veya negatif bir değer, belirtilen zaman aşımı kategorileri için varsayılan zaman aşımıyla değiştirilir Testler Yazma sayfasında tanımlanmıştır. Varsayılan olarak Bazel, boyutun testin boyutuna göre zaman aşımı sınırını belirlemek dolaylı veya açık bir şekilde tanımlamalısınız.
Zaman aşımı kategorisini boyutundan farklı olarak açıkça belirten testler, zaman aşımı boyut etiketi tarafından dolaylı olarak ayarlanmış gibi aynı değeri alır. Dolayısıyla, "uzun" bir zaman aşımı belirten "küçük" boyutlu bir test, açık bir zaman aşımı olmayan "büyük" testlerin sahip olduğu etkili zaman aşımına sahip olur.
--test_arg=arg
Komut satırı seçeneklerini/işaretlerini/bağımsız değişkenlerini her test işlemine iletir. Bu
seçeneği, birkaç bağımsız değişken iletmek için birden çok kez kullanılabilir. Örneğin,
--test_arg=--logtostderr --test_arg=--v=3
.
--test_env=variable=_value_
VEYA --test_env=variable
Teste eklenmesi gereken ek değişkenleri belirtir
ortamını kullandığınızdan emin olun. value belirtilmezse
bazel test
öğesini başlatmak için kullanılan kabuk ortamından devralındı
komutunu kullanın.
Ortam, System.getenv("var")
(Java), getenv("var")
(C veya C++),
--run_under=command-prefix
Bu, test çalıştırıcının öne ekleyeceği öneki belirtir lütfen kontrol edin. İlgili içeriği oluşturmak için kullanılan command-prefix, Bourne kabuğu kullanılarak kelimelere bölündü jetonlara ayırma kuralları daha sonra, kelime listesi komutun çalıştırılacağı anlamına gelir.
İlk kelime tam bir etiketse (
//
) temel alınmıştır. Daha sonra, etiket
komutun başına eklenmiş karşılık gelen yürütülebilir konum
ile birlikte yürütülür.
Dikkat edilmesi gereken bazı noktalar:
- Test çalıştırmak için kullanılan PATH, ortamınızdaki PATH'ten farklı olabilir. Bu nedenle,
--run_under
komutu (command-prefix'taki ilk kelime) 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'
Test seçimi
Çıkış seçimi seçenekleri bölümünde belirtildiği gibi, testleri boyuta, zaman aşımına, etikete veya dile göre filtreleyebilirsiniz. Kolaylık genel ad filtresi belirli bir kullanıcıyı filtre bağımsız değişkenlerini test çalıştırıcıya uygular.
bazel test
için diğer seçenekler
Söz dizimi ve kalan seçenekler tamamen aynı
bazel build
.
Yürütülebilir dosyaları çalıştırma
bazel run
komutu, tek bir hedef oluşturmak ve çalıştırmak için kullanılması dışında bazel build
'e benzer. 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 dosyayı doğrudan çağırmaya benzer ancak aynı değildir ve davranışı, çağrılacak ikili dosyanın test olup olmadığına bağlı olarak farklıdır.
İkili test olmadığında geçerli çalışma dizini, ikili dosyanın çalıştırma dosyaları ağacı olur.
İkili program bir test olduğunda, mevcut çalışma dizini exec kökü olur.
ve aynı zamanda ortam testlerini tekrarlamak için iyi niyetli bir girişimde bulunulduğunda
biraz zorlanır. Ancak bu emülasyon mükemmel değildir ve birden fazla bölüme sahip testler bu şekilde çalıştırılamaz (bu sorunu gidermek için --test_sharding_strategy=disabled
komut satırı seçeneği kullanılabilir).
İkili dosya, aşağıdaki ek ortam değişkenlerini de kullanabilir:
BUILD_WORKSPACE_DIRECTORY
: Derlemenin çalıştırıldığı çalışma alanının kökü.BUILD_WORKING_DIRECTORY
: Buradaki mevcut çalışma dizini Bazel kaynağı çalıştırıldı.
Bunlar, örneğin, komut satırındaki dosya adlarını bir hale getirmek istiyoruz.
bazel run
için seçenekler
--run_under=command-prefix
Bu, bazel test
için --run_under
seçeneğiyle aynı etkiye sahiptir (yukarıya bakın). Bununla birlikte, bazel test
tarafından çalıştırılan testler yerine bazel
run
tarafından çalıştırılan komut için geçerlidir ve etiket altında çalıştırılamaz.
Bazel'den günlük çıkışlarını filtreleme
bazel run
ile bir ikili program çağırırken Bazel, Bazel'den günlük kaydı çıktısını yazdırır
kendisi ve çağrıdaki ikili program. Günlüklerin gürültüyü azaltmak için şunları yapabilirsiniz:
--ui_event_filters
ve kullanarak Bazel'in kendisinden gelen çıkışları bastırın ve
--noshow_progress
işaret.
Örneğin:
bazel run --ui_event_filters=-info,-stdout,-stderr --noshow_progress //java/myapp:myapp
Testleri yürütme
bazel run
, test ikililerini de çalıştırabilir. Bu, testi Test Yazma bölümünde açıklanan ortama yakın bir şekilde çalıştırma etkisine sahiptir. Yukarıdakilerden hiçbirinin
Test, bu şekilde çalıştırıldığında --test_*
bağımsız değişkeni etkilidir:
--test_arg
Derleme çıkışlarını temizleme
clean
komutu
Bazel'de, Make'e benzer bir clean
komutu vardır.
Yapılan tüm derleme yapılandırmaları için çıkış dizinlerini siler.
bu Bazel örneği veya bu Bazel tarafından oluşturulan çalışma ağacının tamamı
Bazel örneğini sıfırlar ve dahili önbellekleri sıfırlar. Komut satırı seçeneği olmadan çalıştırılırsa tüm yapılandırmaların çıkış dizini temizlenir.
Her Bazel örneğinin tek bir çalışma alanıyla ilişkilendirildiğini ve bu nedenle
clean
komutu, yaptığınız tüm derlemelerdeki tüm çıkışları siler
Bazel örneğiyle birlikte gönderebilirsiniz.
Bazel tarafından oluşturulan çalışma ağacının tamamını tamamen kaldırmak için
--expunge
seçeneğini belirtebilirsiniz. Zaman
--expunge
ile yürütüldükten sonra temiz komutun
Tüm çıktı temel ağacını kaldırır ve bu, derlemeye ek olarak
çıkış, Bazel tarafından oluşturulan tüm geçici dosyaları içerir. Aynı zamanda
shutdown
komutuna eşdeğer temizlik işleminin ardından Bazel sunucusunu durdurur. Örneğin,
Bazel örneğinin tüm disk ve bellek izlerini temizlediğinizde,
belirtin:
% bazel clean --expunge
Alternatif olarak, --expunge_async
simgesini kullanarak arka planda silme işlemi yapabilirsiniz. Asenkron silme işlemi devam ederken aynı istemcide bir Bazel komutu çağırmak güvenlidir.
clean
komutu, öncelikle artık ihtiyaç duyulmayan çalışma alanlarının disk alanını geri kazanmak için sağlanır.
Bazel'ın artımlı yeniden oluşturmaları
için mükemmeldir. Böylece clean
, tutarlı bir
belirtmek için de kullanabilirsiniz.
Bazel'ın tasarımı bu sorunlar giderilebilir ve
bu hataların düzeltilmesi çok önemlidir. Şu durumda:
araçlarda yanlış bir artımlı derleme bulabilir, hata raporu gönderebilir ve hataları bildirebilirsiniz
(clean
kullanmak yerine).
Bağımlılık grafiğini sorgulama
Bazel, bağımlılık grafiğidir. Sorgu dili iki komutla kullanılır: sorgu ve cquery. Bu iki komut arasındaki en önemli fark, query'nin yükleme aşamasından sonra, cquery'nin ise analiz aşamasından sonra çalıştırılmasıdır. Bu araçlar, birçok yazılım mühendisliği görevinde paha biçilmez bir yardımcıdır.
Sorgu dili, şu düşünceyi temel alır: grafikler yerine cebir işlemleri; ayrıntılı bir şekilde açıklanmıştır.
Bazel Sorgu Referansı. Lütfen referans için bu dokümana bakın: örnekleri ve sorguya özgü komut satırı seçenekleri.
Sorgu aracı, çeşitli komut satırı seçeneklerini kabul eder. --output
, çıkış biçimini seçer.
--[no]keep_going
(varsayılan olarak devre dışı), sorguya neden olur
ve hatalar konusunda ilerleme kaydetmeye devam etmek için bir araç bu davranış
hata olması durumunda eksik sonuç kabul edilemezse devre dışı bırakılır.
Varsayılan olarak etkinleştirilen --[no]tool_deps
seçeneği, hedef olmayan 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ştirilmiş olan --[no]implicit_deps
seçeneği,
sorgunun çalıştığı bağımlılık grafiğine dahil edilecek örtülü bağımlılıkları belirler.
örtülü bağımlılık, BUILD dosyasında açıkça belirtilmeyen bir bağımlılıktır
ancak bazel tarafından eklenir.
Örnek: "Şunun tanımlarının konumlarını göster (BUILD dosyalarında): bir araya getirmek."
bazel query --output location 'kind(genrule, deps(kind(".*_test rule", foo/bar/pebl/...)))'
İşlem grafiğini sorgulama
aquery
komutu, derleme grafiğinizdeki işlemleri sorgulamanızı sağlar.
Analiz sonrası yapılandırılmış hedef grafiğinde çalışır ve işlemler, yapı taşları ve bunların ilişkileri hakkında bilgi sağlar.
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. Makine tarafından okunabilir biçim için proto
veya textproto
kullanın.
aquery komutunun, normal bir Bazel derlemesinin üzerinde çalıştığı ve derleme sırasında kullanılabilen seçenek grubunu devraldığı özellikle belirtilmelidir.
Geleneksel query
'te de kullanılabilen aynı işlev grubunu destekler ancak siblings
, buildfiles
ve tests
'te de kullanılabilir.
Daha ayrıntılı bilgi için İşlem Grafiği Sorgusu bölümüne bakın.
Çeşitli komutlar ve seçenekler
help
help
komutu, online yardım sunar. Varsayılan olarak
şurada gösterildiği gibi kullanılabilir komutların ve yardım konularının bir özetini gösterir:
Bazel ile geliştirme.
Bir bağımsız değişken belirtmek, belirli bir konuyla ilgili ayrıntılı yardım gösterir. Konuların çoğu 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 ilgili alakalı seçeneklerin özetini yazdırır. --long
seçeneği belirtilirse her bir seçeneğin türü, varsayılan değeri ve tam açıklaması da yazdırılır.
shutdown
Bazel sunucusu işlemleri, shutdown
kullanılarak durdurulabilir
komutunu kullanın. Bu komut, Bazel sunucusunun boş kalması (örneğin, herhangi bir derlemenin veya devam etmekte olan diğer komutların tamamlanmasından sonra) hemen sonra çıkmasını sağlar. Daha fazla bilgi için İstemci/sunucu uygulaması başlıklı makaleyi inceleyin.
Bazel sunucuları boşta kalma zaman aşımından sonra kendilerini durdurur. Bu nedenle, nadiren gereklidir; ancak gerektiğinde komut dosyalarında çalışma alanında başka derleme gerçekleşmeyeceğini tahmin edebilir.
shutdown
bir kabul ediyor
--iff_heap_size_greater_than _n_
. seçenek,
bir tamsayı bağımsız değişkeni gerektirir (MB cinsinden). Bu ayar belirtilirse kapatma işlemi, önceden tüketilen bellek miktarına bağlı olur. Bazel sunucusunda meydana gelen bellek sızıntıları, sunucunun zaman zaman beklenmedik şekilde kilitlenmesine neden olabileceğinden, bu özellik çok sayıda derleme başlatan komut dosyaları için kullanışlıdır. Koşullu yeniden başlatma işlemi, bu durumu önler.
info
info
komutu,
sunucu örneği veya belirli bir derleme yapılandırması
kullanabilirsiniz.
(Bu değerler, derlemeyi yöneten komut dosyaları tarafından kullanılabilir.)
info
komutu ayrıca tek bir (isteğe bağlı)
bağımsız değişkeni, aşağıdaki listede bulunan anahtarlardan birinin adıdır.
Bu durumda bazel info key
yalnızca söz konusu anahtarın değerini yazdırır. (Bu yöntem, özellikle de
sonucu aktarma ihtiyacını ortadan kaldırdığı için Bazel komut dosyası yazma
sed -ne /key:/s/key://p
tarihine kadar:
Yapılandırmadan bağımsız veriler
release
: Bu Bazel örneğinin sürüm etiketi veya yayınlanmış bir ikili dosya değilse "geliştirme sürümü".workspace
Ana çalışma alanı dizininin mutlak yolu.install_base
: Mevcut kullanıcı için bu Bazel örneği tarafından kullanılan yükleme dizininin mutlak yolu. Bazel, dahili olarak gerekli olan yürütülebilir dosyalarını bu dizinin altına yükler.output_base
: Mevcut kullanıcı ve çalışma alanı kombinasyonu için bu Bazel örneği tarafından kullanılan temel çıkış dizininin mutlak yolu. Bazel her şeyi ortaya koyuyor çıktısını burada bulabilirsiniz.execution_root
: output_base altındaki yürütme kök dizininin mutlak yolu. Bu dizin, derleme sırasında çalıştırılan komutların erişebildiği tüm dosyaların köküdür ve bu komutların çalışma dizinidir. Çalışma alanı dizini yazılabilirsebazel-<workspace>
adlı sembolik bağlantı buraya bu dizini işaret edecek şekilde yerleştirilir.output_path
: çıkışın mutlak yolu aslında tüm dosyalar için kullanılan yürütme kökünün altındaki dizin bir sonucu olarak oluşturulur. Çalışma alanı dizini yazılabilir,bazel-out
adında bir sembolik bağlantı buraya yerleştirilmiş bu dizine ekleyebilirsiniz.server_pid
: Bazel sunucu sürecinin 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 süresi boyunca tüm komutlar için hata ayıklama bilgilerini içerir ve Bazel geliştiricileri ile ileri düzey kullanıcılar tarafından okunmak üzere tasarlanmıştır.command_log
: Komut günlük dosyasının mutlak yoludur. En son Bazel komutunun iç içe yerleştirilmiş stdout ve stderr akışlarını içerir.bazel info
çalıştırıldığında, bu dosyanın tüm içeriklerine uygulanır. Çünkü dosya, en son Bazel komutu haline gelir. Ancak--output_base
veya--output_user_root
seçeneklerinin ayarını değiştirmediğiniz sürece komut günlüğü 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 bellek JVM'ye sistemden kullanılabilir olması garanti edilir; sağlayabilirsiniz.gc-count
,gc-time
: Bu Bazel sunucusunun başlatılmasından bu yana yapılan toplam çöp toplama sayısı ve bu işlemlerin gerçekleştirilmesi için harcanan süre. Bu değerlerin her derlemenin başında sıfırlanmadığını unutmayın.package_path
: bazel tarafından paket aranacak yolların iki nokta üst üste ile ayrılmış 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, iletilen yapılandırma seçeneklerinden etkilenebilir
bazel info
adlı gruba, şunun için:
örnek --cpu
, --compilation_mode
,
vb. info
komutu, tüm projeniz için
bağımlılığı kontrol eden seçenekler
çünkü bunlardan bazıları müşterinin konumunu belirlediğinden,
derlemenin çıkış dizini, derleyici seçimi vb.
bazel-bin
,bazel-testlogs
,bazel-genfiles
: Derleme tarafından oluşturulan programların bulunduğubazel-*
dizinlerinin mutlak yolunu bildirir. Bu, her zaman olmasa da genellikle başarılı bir derleme sonrasında ana Workspace dizininde oluşturulanbazel-*
sembolik bağlantılarıyla aynıdır. Ancak çalışma alanı dizini salt okunur isebazel-*
sembolik bağlantısı oluşturulamaz. Belgenizdebazel info
tarafından bildirilen değer mevcut olması daha sağlam olacaktır.- Tamamlanmış "Make" ortamı.
--show_make_env
işareti belirtilirse geçerli yapılandırmadaki "Make" ortamındaki tüm değişkenler de (CC
,GLIBC_VERSION
vb.) görüntülenir. Bunlar,$(CC)
kullanılarak erişilen değişkenlerdir veyavarref("CC")
söz dizimini derleyin.
Örnek: mevcut yapılandırma için C++ derleyicisi.
Bu, "Make" (Yap) sütunundaki $(CC)
değişkenidir. ortam,
bu nedenle --show_make_env
işareti gerekir.
% bazel info --show_make_env -c opt COMPILATION_MODE opt
Örnek: geçerli için bazel-bin
çıkış dizini
yapılandırma. bazel-bin
sembolik bağlantısının herhangi bir nedenle oluşturulamadığı durumlarda bile (ör. salt okunur bir dizinden derliyorsanız) bu değerin doğru olduğu 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
version komutu, derlenen Bazel ikilisiyle ilgili sürüm ayrıntılarını (derlendiği değişiklik listesi ve tarih dahil) yazdırır. Bu bilgiler özellikle en son Bazel sürümüne sahip olup olmadığınızı belirlemek veya hata bildirmek için 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'in yayın etiketi "geliştirme sürümü" TV'de yayınlanmayan ikilik. Hata bildirirken çok faydalı.
bazel --version
, başka bağımsız değişkeni olmadan
bazel version --gnu_format
,
sunucu arşivini açmanız gerekir. bazel --version
şuradan çalıştırılabilir:
herhangi bir yerde çalışır. Ç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 mobile-install (bazel mobil yükleme) sayfasına bakın.
Aşağıdaki seçenekler desteklenir:
--incremental
Ayarlanırsa Bazel uygulamayı aşamalı olarak yüklemeye çalışır. Yani,
zaman içindeki değişimleri görebilirsiniz. Bu işlem, AndroidManifest.xml
'ten, yerel koddan veya Java kaynaklarından (Class.getResource()
tarafından referans verilenler gibi) referans verilen kaynakları güncelleyemez. Bu öğeler değişirse bu seçenek atlanmalıdır. Bazel'in ruhuna karşı
Android platformunun sınırlamaları nedeniyle,
kullanıcının sorumluluğunu üstlenerek başka bir komutun
tam yükleme gerektiğinde.
Marshmallow veya sonraki sürümlerin 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ümlerin yüklü olduğu cihazlarda çalışır. --split_apks
kullanılırken --incremental
işaretinin gerekli olmadığını unutmayın.
--start_app
Yükleme işleminden sonra uygulamayı temiz durumda başlatır. --start=COLD
etiketine eş değer.
--debug_app
Yüklemeden sonra uygulamayı temiz bir 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 nasıl başlatılması gerektiği. Desteklenen _start_type_ öğeleri şunlardır:
NO
Uygulamayı başlatmaz. Bu varsayılan ayardır.COLD
Uygulamayı yükleme işleminden sonra temiz bir durumda başlatır.WARM
Artımlı yüklemelerde uygulama durumunu korur ve geri yükler.DEBUG
Şu süreden sonra uygulamayı temiz durumda başlatmadan önce hata ayıklayıcıyı bekler: teşekkür ederiz.
--adb=path
Kullanılacak adb
ikili programını belirtir.
Varsayılan ad,
--android_sdk
.
--adb_arg=serial
adb
için fazladan bağımsız değişkenler. Bunlar, komut satırında 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ünü 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ükleme için ayrıntı düzeyi. Hata ayıklama günlük kaydının kullanılması için 1 olarak ayarlayın konsola da yazdırılır.
dump
dump
komutu, Bazel sunucusunun dahili durumunun bir dökümünü stdout'a yazdırır. Bu komut,
kullanılması için kullanılabilmesidir. Dolayısıyla bu komutun çıkışı,
belirtilmemiştir ve değişiklik yapılabilir.
Varsayılan olarak komut, Bazel durumunun belirli alanlarını dökmek için kullanılabilecek seçenekleri özetleyen bir yardım mesajı yazdırır. Döküm için dahili durumda olması durumunda, seçeneklerden en az biri belirtilmelidir.
Aşağıdaki seçenekler desteklenir:
--action_cache
, işlem önbelleği içeriğini döküyor.--packages
, paket önbellek içeriğini atar.--skyframe
, dahili Bazel bağımlılık grafiğinin durumunu dökümü alır.--rules
, sayılar ve işlem sayıları dahil olmak üzere her kural ve görünüm sınıfı için kural özetini dökümü yapar. Buna hem yerel hem de Starlark kuralları dahildir. Bellek izleme etkinse kuralların yazdırılır.--skylark_memory
, belirtilen yola pprof uyumlu bir .gz dosyası döker. Bunun çalışması için bellek izlemeyi etkinleştirmeniz gerekir.
Bellek takibi
Bazı dump
komutları bellek izleme gerektirir. Bu özelliği etkinleştirmek için:
başlangıç bayraklarını Bazel'a ilet:
--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ı, Bazel'daki şu adreste kontrol edilir:
third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar
, bu nedenle
Bazel deponuzu sakladığınız yere göre $BAZEL
değerini 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, daha önce bir Bazel çağrısı sırasında toplanan JSON izleme profilini analiz eder.
canonicalize-flags
canonicalize-flags
komutuna dahil edebilirsiniz. Bazel komutuna ilişkin seçeneklerin listesini alır ve komutlara ait
seçeneklerini de belirleyebilirsiniz. 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ında seçim yapmak için kullanılabilir. Şu anda yalnızca build
ve test
desteklenmektedir. Verilen komutun desteklemediği seçenekler hataya neden olur.
Ö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 sunucu işlemi tarafından kullanılan Java sanal makinesinin başlatılmasını etkiler ve bu sunucu tarafından işlenen sonraki tüm komutlar için geçerlidir. Çalışan bir Bazel sunucusu varsa ve başlangıç seçenekleri eşleşmiyorsa sunucu 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ı .bazelrc
dosyasında listelemek için startup --key=value
'ü kullanın.
--output_base=dir
Bu seçenek için bir yol bağımsız değişkeni gerekir. Bu bağımsız değişken, yazılabilir bir dizin belirtmelidir. Bazel, tüm bilgilerini yazmak için bu konumu çıktı. Çıkış tabanı aynı zamanda istemcinin giriş yaparken Bazel sunucusu. Çıkış tabanını değiştirerek sunucuyu da değiştirmiş olursunuz. bu kodu işleyeceğiz.
Varsayılan olarak çıkış tabanı, kullanıcının giriş adından ve Workspace dizininin adından (aslında MD5 özeti) türetilir. Bu nedenle, tipik bir değer şöyle 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 aynı anda çalışır (kabuk &
operatörü nedeniyle) ve her biri farklı bir Bazel sunucusu örneği kullanır (farklı çıkış tabanları nedeniyle).
Buna karşın her iki komutta da varsayılan çıkış tabanı kullanıldıysa
her iki istek de aynı sunucuya gönderilir. Bu da
sıralı olarak ele alın: önce //foo
, ardından
artımlılık artışıyla //bar
.
--output_user_root=dir
Çıkış ve yükleme tabanlarının oluşturulduğu kök dizine işaret eder. Dizin görüşmedeki kullanıcının mevcut olmaması veya ona ait olması gerekir. Önceden bu özelliğin çeşitli kullanıcılar arasında paylaşılan bir dizine işaret etmesine izin veriliyordu ancak artık buna izin verilmiyor. 11100 numaralı sorun giderildikten sonra buna izin verilebilir.
--output_base
seçeneği belirtilirse çıkış tabanını hesaplamak için --output_user_root
kullanılması geçersiz kılınır.
Yükleme tabanı konumu,
--output_user_root
ve yerleştirilmiş Bazel'in MD5 kimliği
her zaman daha iyidir.
Aşağıdakilerden birini seçmek için --output_user_root
seçeneğini kullanabilirsiniz:
Bazel'in tüm çıktıları için alternatif temel konum (yükleme tabanı ve çıkışı
temel) kullanılabilir.
--server_javabase=dir
Bazel'in çalıştığı Java sanal makinesini belirtir. Değer, JDK veya JRE içeren dizin olabilir. Etiket olmamalıdır. Bu seçenek, Bazel komutlarından önce görünmelidir. Örneğin:
% bazel --server_javabase=/usr/local/buildtools/java/jdk11 build //foo
Bu işaret, Bazel alt süreçleri tarafından kullanılan JVM'leri (ör. uygulamalar, testler, araçlar vb.) etkilemez. Derleme seçeneklerini kullanın: --javabase veya --host_javabase kullanın.
Bu işaret daha önce --host_javabase
(bazen "sol taraftaki" --host_javabase
olarak adlandırılır) olarak adlandırılıyordu ancak derleme işareti --host_javabase (bazen "sağ taraftaki" --host_javabase
olarak adlandırılır) ile karışıklık olmaması için yeniden adlandırıldı.
--host_jvm_args=string
Bazel'in bulunduğu Java sanal makinesine aktarılacak bir başlangıç seçeneğini belirtir koşar. Bu, yığın boyutunu ayarlamak için kullanılabilir. Örneğin:
% bazel --host_jvm_args="-Xss256K" build //foo
Bu seçenek, bağımsız bağımsız değişkenlerle birden çok kez kullanılabilir. Bu işaretin ayarlanmasına nadiren ihtiyaç duyulduğ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 iletebilirsiniz. Ancak bu özellik yakında kullanımdan kaldırılacaktır.
Bu durum, Bazel'in alt süreçleri tarafından kullanılan JVM'leri (uygulamalar, testler, araçlar vb.) etkilemez. bazel
run
tarafından veya komut satırında çalıştırılan yürütülebilir Java programlarına JVM seçeneklerini iletmek için tüm java_binary
ve java_test
programları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 ...
işlevini kullanın.
--host_jvm_debug
Bu seçenek, Java sanal makinesinin bağlantıyı beklemesine neden olur JDWP uyumlu bir hata ayıklayıcısından Bazel'in ana yöntemi olarak adlandırılıyor. Bu, öncelikle 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'yi otomatik olarak aramasına ve yerleşik JRE kullanılamıyorsa yüklü JRE'ye geri dönmesine neden olur.
--explicit_server_javabase
, kullanılacak belirli bir JRE seçmek için kullanılabilir
çalıştırmanız için bir fırsattır.
--batch
Toplu mod, Bazel'in standart istemci/sunucu modu vardır, ancak bunun yerine bir bazel çalıştırır tek komut için bir Java işlemi sunar. Bu komut daha tahmin edilebilir sinyal işleme, iş kontrolü ve ortam ile ilgili anlamlar devralınan bir değerdir ve chroot hapishanesinde bazel çalıştırmak için gereklidir.
Toplu modu, aynı çıkış_tabanı içinde uygun sıraya alma anlamını korur. Yani eşzamanlı çağrılar, çakışma olmadan sırayla işlenir. Bazel toplu modu, çalışan bir sunucuya sahip bir istemcide çalıştırılıyorsa önce komutu işlemeden önce sunucuyu sonlandırır.
Bazel, toplu modda veya yukarıda açıklanan alternatiflerle daha yavaş çalışır. Bunun nedeni, diğer şeylerin yanı sıra, derleme dosyası önbelleğinin bellekte kalmasıdır. Dolayısıyla, otomatik çağrılarla korunduğundan emin olun. Bu nedenle, performansın yüksek olduğu durumlarda toplu modun kullanılması sürekli derlemeler gibi daha az kritik öneme sahiptir.
--max_idle_secs=n
Bu seçenek, Bazel sunucu sürecinin son istemci isteğinden sonra çıkmadan önce saniye cinsinden ne kadar beklemesi gerektiğini belirtir. Varsayılan değer 10.800 (3 saat) şeklindedir. --max_idle_secs=0
, Bazel sunucu işleminin süresiz olarak devam etmesine neden olur.
Bu seçenek, Bazel'i çağıran komut dosyaları tarafından
bir kullanıcı makinesinde Bazel sunucusundaki işlemleri bırakmazlar.
çalışmazdı.
Örneğin, bir göndermeden önce komut dosyası, kullanıcının bekleyen değişikliğinin istenmeyen bağımlılıklara neden olmaması için bazel query
işlevini çağırabilir. Ancak kullanıcı bu çalışma alanında yakın zamanda bir derleme yapmadıysa göndermeden önce komut dosyasının, günün geri kalanında boşta kalması için bir Bazel sunucusu başlatması istenmez.
Sorgu isteğinde küçük bir --max_idle_secs
değeri belirterek komut dosyası, yeni bir sunucunun başlatılmasına neden olursa bu sunucunun hemen çıkmasını sağlayabilir. Bunun yerine zaten çalışan bir sunucu varsa bu sunucu, normal süre boyunca boşta kalana kadar çalışmaya devam eder. Elbette mevcut sunucunun boş zamanlayıcısı sıfırlanır.
--[no]shutdown_on_low_sys_mem
Etkinleştirilirse ve --max_idle_secs
pozitif bir süreye ayarlanırsa
derleme sunucusu bir süre boşta kaldığında sistem şu ana kadar sunucuyu kapatın:
kullanılabilir. Yalnızca Linux.
Derleme sunucusu, max_idle_secs değerine karşılık gelen bir boşta kalma kontrolü çalıştırmanın yanı sıra sunucu bir süre boşta kaldıktan sonra kullanılabilir sistem belleğini izlemeye başlar. Kullanılabilir sistem belleği kritik düzeyde düşük olursa sunucu kapanır.
--[no]block_for_lock
Etkinleştirilirse Bazel, sunucu kilidinin tamamlanması gerekir. Devre dışı bırakılırsa Bazel, kilidi hemen alıp devam edemezse hatayla çıkar.
Geliştiriciler, aynı istemcide başka bir Bazel komutunun neden olduğu uzun bekleme sürelerini önlemek için bunu göndermeden önce yapılan kontrollerde kullanabilir.
--io_nice_level=n
En iyi çaba KS planlaması için 0-7 arasında bir seviye ayarlar. 0 en yüksek önceliktir, 7 en düşük değerdir. Beklentiyi temel alan planlayıcı, yalnızca 4 numaralı önceliği dikkate alabilir. Negatif değerler yoksayılır.
--batch_cpu_scheduling
Bazel için batch
CPU planlamasını kullanın. Bu politika aşağıdakiler için yararlıdır:
diğer iş yüklerini ifade eder.
"man 2 sched_setscheduler" bölümüne bakın. Bu politika, Bazel veri akışı pahasına daha iyi sistem etkileşimi sağlayabilir.
Çeşitli seçenekler
--[no]announce_rc
Aşağıdaki durumlarda Bazel'ın bazelrc dosyasından okunan komut seçeneklerini duyurup bildirmeyeceğini kontrol eder: yardımcı oluyorum. (Başlangıç seçenekleri koşulsuz olarak duyurulur.)
--color (yes|no|auto)
Bu seçenek, Bazel'in ekrandaki çıktısını vurgulamak için renk kullanıp kullanmayacağını belirler.
Bu seçenek yes
değerine 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 gönderilip gönderilmediğine ve TERM ortam değişkeninin ayarına bakılmaksızın renkli çıkış devre dışı bırakılır.
--config=name
rc dosyalarından ek yapılandırma bölümünü seçer; mevcut command
için, böyle bir bölüm varsa command:name
'daki seçenekleri de alır. Birden fazla yapılandırma bölümünden işaret eklemek için birden çok kez belirtilebilir. Genişletmeler
tanımlar (örneğin, genişletmeler zincirlenebilir).
--curses (yes|no|auto)
Bu seçenek, Bazel'in imleç denetimlerini kullanıp kullanmayacağını belirler
emin olabilirsiniz. Bu sayede, daha az kaydırma gerektiren veriler elde edilir ve Bazel'den daha kompakt, okunması kolay bir çıkış akışı sağlanır. Bu yöntem --color
ile iyi çalışır.
Bu seçenek yes
değerine 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
olarak ayarlanırsa imleç denetimlerinin kullanımı, --color=auto
ile aynı koşullarda etkinleştirilir.
--[no]show_timestamps
Belirtilirse İletinin görüntülendiği saati belirten Bazel.