Bu sayfada, çeşitli Bazel komutlarıyla kullanılabilen seçenekleri,
bazel build
, bazel run
ve bazel test
gibi. Bu sayfa tamamlayıcıdır
komutunu Bazel ile derleme bölümünde Bazel'ın komutları listesine ekleyeceğiz.
Hedef söz dizimi
build
veya test
gibi bazı komutlar bir hedef listesinde çalışabilir. Onlar
etiketlerden daha esnek bir söz dizimi kullanın. Bu kullanım,
Oluşturulacak hedefleri belirleme.
Seçenekler
Aşağıdaki bölümlerde,
seçeceğiz. --long
bir yardım komutunda kullanıldığında
anlamı, türü ve biçimi hakkında özet bilgi sağlaması için
her seçenek için varsayılan değere sahiptir.
Çoğu seçenek yalnızca bir kez belirtilebilir. Birden fazla kez belirtildiğinde son örnek kazanır. Birden çok kez belirtilebilen 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 yolunda arama yaparak 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 yol göreli olarak alınır en yakın ilgili bazel dizinine eklemeniz gerekir. Örneğin, çalışma dizininiz/home/bob/clients/bob_client/bazel/foo
ise paket yolundaki%workspace%
dizesi genişletildi alıcı:/home/bob/clients/bob_client/bazel
. - Diğer tüm değerler çalışma dizinine 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ırsanız ve sonra cd'yi kullanarak dizine/home/bob/clients/bob_client/bazel/foo
, paketler/home/bob/clients/bob_client/bazel/foo
dizini.
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 tüm gerekli paketler başka bir yerde bulunabiliyorsa Google 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 işlettiği paketlerin virgülle ayrılmış listesini silinmiş olarak kabul edilmeli ve herhangi bir dizinden yüklenmeye çalışmamalıdır 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 ayrı ayrı 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 (doğru) değerine sahiptir. Böylece, varsayılan olarak tamamlandığını belirtir.
--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şir ve yürütme başarılı olursa standart
çıktı ve standart hata silinir.
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ö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'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şkeni alır. Bağımsız değişken, her çağrıldığında derleyiciye aktarılır derlemeye ve/veya birleştirmeye yönelik C, C++ ya da assembler kodu kullanabilirsiniz. Bağlantı verilirken bu ileti dizisi iletilmeyecek.
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 koddur.
--host_copt=cc-option
Bu seçenek, 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,
--copt
seçeneği kullanılabilir, ancak yalnızca
exec konfigürasyonunu kullanabilirsiniz.
--host_conlyopt=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,
--conlyopt
seçeneği geçerlidir, ancak yalnızca geçerlidir
yapılandırmaya çalışın.
--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ği kullanılabilir, ancak yalnızca
exec konfigürasyonunu kullanabilirsiniz.
--host_linkopt=linker-option
Bu seçenek, kaynak dosyalar için bağlayıcıya iletilecek bir bağımsız değişkeni alır
exec yapılandırmasında derlenen komut dosyalarıdır. Bu,
--linkopt
seçeneği sunulur, ancak yalnızca
yapılandırma dosyasıdır.
--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ısı ile değil. Böylece C'ye özel seçenekleri
(örneğin, -Wno-pointer-sign
) --conlyopt
kullanarak.
--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
işlevine benzer ancak yalnızca C++ derlemesi için geçerlidir.
C derlemesi veya bağlantısıyla değil. Böylece C++'a özgü seçenekleri iletebilirsiniz.
--cxxopt
kullanarak (-fpermissive
veya -fno-implicit-templates
gibi).
Ö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
ö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.
bağlantı anında (-lssp
veya -Wl,--wrap,abort
)
--linkopt
kullanılıyor. Örneğin:
% bazel build --copt="-fmudflap" --linkopt="-lmudflap" //foo/buggy_code
Derleme kuralları, özelliklerinde de bağlantı seçeneklerini belirtebilir. Bu seçeneğin her zaman önceliklidir. Şunlara da bakabilirsiniz: cc_library.linkopts gibi bir sorguyla sona ermediğini unutmayı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
hedefi derler ve oluşturulan tüm öğelerden hata ayıklama bilgilerini ayıklar her zaman daha iyidir.
Bazel'in --strip
seçeneği, ld'nin --strip-debug
seçeneğine karşılık gelir:
yalnızca hata ayıklama bilgilerini ayıklar. 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ü. Bu konudaki
--stripopt
, bu, nihai ikili programdan sonra bir çıkartma işlemi uygular:
bağlantısı verilen öğeleri içerir.
--stripopt=strip-option
Bu,strip
*.stripped
ikili programı. Varsayılan
-S -p
. Bu seçenek birden çok kez kullanılabilir.
--fdo_instrument=profile-output-dir
--fdo_instrument
seçeneği, aşağıdakilerin oluşturulmasını sağlar:
FDO (geri bildirim yönlendirmeli optimizasyon) profili çıkışı
C/C++ ikili programı yürütülür. 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çeren bir dosyayı yükleyin.
Profil veri ağacı oluşturulduktan sonra, profil ağacı
fermuarlı olmalı ve vasıtasıyla
--fdo_optimize=profile-zip
.
FDO için optimize edilmiş derlemeyi etkinleştirmek için Bazel seçeneği.
LLVM derleyicisi için bağımsız değişken, aynı zamanda ham LLVM profilinin altında yer aldığı dizindir.
veri dosyaları dökümü alındı. Örnek:
--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,
FDO (geri bildirim) işlemi gerçekleştirmek için nesne başına dosya profil bilgileri
yönlendirilmiş optimizasyon). GCC için bağımsız değişken
sağlanan ZIP dosyası, önceden oluşturulan dosya ağacını içeren
her .o dosyası için profil bilgilerini içeren .gcda dosyalarından oluşur.
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 kuralı.
--tool_java_runtime_version=version
Derleme sırasında gerekli olan 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ına izin verir. Kullanılabilir veya bağımsız argümanlarla birden çok kez yapabilirsiniz. Ö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'ye geçirilmesine izin verir. Kullanılabilir veya bağımsız argümanlarla birden çok kez yapabilirsiniz. Örneğin:
% bazel build --javacopt="-g:source,lines" //myprojects:prog
Java_binary'yi varsayılan hata ayıklama bilgisi ile yeniden oluşturur (bazel varsayılanı yerine).
Seçenek, Bazel'in yerleşik varsayılan seçeneklerinden sonra javac'ya iletilir javac kodunu ekleyin. Proje yönetiminin kullanabilir. 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'nin 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ışı bırakıldığı anlamına gelir.warn
, javac'nin şunun standart Java uyarılarını oluşturacağı anlamına gelir: doğrudan bağımlılığı olmayan her biri için[strict]
yazın.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 biri için farklı bir çıkış dizini kullanır
Böylece, derlemeye ihtiyaç duymadan modlar arasında geçiş yapabilirsiniz.
her seferinde tamamen yeniden oluşturma işlemi yapması gerekiyor.
fastbuild
, olabildiğince hızlı derleme anlamına gelir: minimum düzeyde hata ayıklama bilgisi (-gmlt -Wl,-S
) oluşturur ve optimizasyon yapmaz. Bu, varsayılandır. Not:-DNDEBUG
ayarlanmaz.dbg
, hata ayıklamanın etkin olduğu derleme anlamına gelir (-g
), Böylece gdb (veya başka bir hata ayıklayıcıyı) kullanabilirsiniz.opt
, optimizasyonu etkinleştirilmiş ve (-O2 -DNDEBUG
)assert()
çağrıyla devre dışı bırakıldı.opt
modunda hata ayıklama bilgileri oluşturulmaz--copt -g
testini geçemezseniz.
--cpu=cpu
Bu seçenek, kullanılacak hedef CPU mimarisini belirtir ikili programların derlenmesiyle başlar.
--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 adla belirtilebilir. Bu durumda, değer
veya değeri name=value
çağrı ortamı.
Bu --action_env
işareti birden çok kez belirtilebilir. Aynı
değişkeni birden fazla --action_env
bayrağında gösterilirse en son atama kazanır.
--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 doğru değerine ayarlanırsa
--experimental_action_listener
komutu
çizgi seçeneği yalnızca üst düzey hedefler için planlanacaktı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şareti.
Varsayılan olarakextra_actions
istenen hedeflerin yürütülmesi planlandı.
--experimental_extra_action_filter
, planlama işlemini şununla sınırlayacak:
Sahip etiketinin belirtilenle eşleştiği extra_actions
normal ifadeye benzer.
Aşağıdaki örnek, extra_actions
tarihli planlamayı sınırlandırır
yalnızca sahibin etiketinde '/bar/' bulunan işlemlere uygulanacak:
% 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]*
Geçişli deps
derlenecek platformlar:
android_binary
kuralları (özellikle C++ gibi yerel bağımlılıklar için). Örneğin,
Örneğin, bir cc_library
öğesinin geçişli deps
içinde
android_binary
kuralı, belirtilen her platform için bir kez oluşturulur.
android_binary
kuralı için --android_platforms
ve son kurala dahil edildi
çıktı.
Bu işaret için varsayılan bir değer yok: Özel Android platformu tanımlanıp kullanılır.
Belirtilen her platform için bir .so
dosyası oluşturulur ve APK'da paketlenir
--android_platforms
ile. .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. Ayrıca, platforma bağlı tüm ön ekleri de içerir.
Oluşturulan dosyaları (ör. genel çıkışlar) eşleştirmek için
Bazel yalnızca yürütme yolunu kullanabilir. Bu durumda, normal ifade '//' ile başlamamalıdır.
çünkü hiçbir yürütme yoluyla eşleşmez. 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.
Seçenek, kullanılan derleme modundan bağımsız olarak uygulanır. Örneğin bir paydaşın
derlemek için --compilation_mode=opt
ile derlemek ve
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
, iletilen rastgele bir seçenek anlamına gelir
C++ derleyici kodlayın. Bir seçenek ,
içeriyorsa bu şekilde alıntılanması gerekir
\,
. 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
C++ ikili programlarının dinamik olarak bağlanıp bağlanmayacağını belirler ve linkstatic [bağlantı] özelliğini kullanın.
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 adresini ziyaret edin ekleyebilirsiniz.fully
: Tüm hedefleri dinamik olarak bağlar. Bu işlem, bağlantı süresini kısaltabilir ve sonuçta elde edilen ikili dosyaların boyutunu azaltabilirsiniz.off
: Şuradaki tüm hedefleri bağlar: çoğunlukla statik modda kullanılır.-static
linkopts'te ayarlanırsa hedefler tamamen statik olacak şekilde değişir.
--fission (yes|no|[dbg][,opt][,fastbuild])
Fisyon'u etkinleştirir, C++ hata ayıklama bilgilerini .o dosyaları yerine özel .dwo dosyalarına yazar. yoksa gidersiniz. Bu işlem, bağlantıların giriş boyutunu önemli ölçüde küçültür ve bağlantı sürelerini kısaltabilir.
[dbg][,opt][,fastbuild]
olarak ayarlandığında (örnek:
--fission=dbg,fastbuild
), Fisyon etkin
yalnızca belirtilen derleme modları için kullanılabilir. 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. no
varsayılandır.
--force_ignore_dash_static
Bu işaret ayarlanırsa-static
cc_*
kural BUILD dosyası yoksayıldı. Bu yalnızca
için geçici bir çözüm sunar.
--[no]force_pic
Etkinleştirilirse tüm C++ derlemeleri konumdan bağımsız kod ("-fPIC") üretir, bağlantılar, PIC olmayan kitaplıklar yerine önceden oluşturulmuş PIC kitaplıklarını tercih eder. konumdan bağımsız yürütülebilir dosyalar ("-pie"). Varsayılan ayar 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ı değerine ayarlanır.
--custom_malloc=malloc-library-target
Belirtildiğinde, tüm
malloc="target"
özelliklerini kullanan hedefler de dahil olmak üzere,
varsayılan olarak (herhangi bir malloc
belirtmeyerek).
--crosstool_top=label
Bu seçenek, çapraz araç derleyici paketinin konumunu belirtir
derleme sırasındaki tüm C++ derlemeleri için kullanılır. 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 bayrağın temel amacı
çapraz derlemeyi mümkün kılmaktır.
--apple_crosstool_top=label
Geçişli deps
içinde C/C++ kuralları derlemek için kullanılacak çapraz araç
objc*, ios* ve apple* kurallarına uygun olduğundan emin olun. Bu bayrak, söz konusu hedefler için
--crosstool_top
--android_crosstool_top=label
Geçişli deps
içinde C/C++ kuralları derlemek için kullanılacak çapraz araç
android_binary
kural. Bu,
farklı bir çapraz araç
gerektirir. Varsayılan olarak çapraz araç
WORKSPACE dosyasındaki android_ndk_repository
kuralı tarafından oluşturulur.
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 değer 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ığı kuralı.
android_sdk_repository
aşağıdaki durumlarda Android SDK'sı otomatik olarak seçilir:
kuralı WORKSPACE dosyasında tanımlanır.
--java_toolchain=label
Bu seçenek, Java'yı derlemek için kullanılan java_toolchain etiketini belirtir kaynak dosyalar.
--host_java_toolchain=label
Belirtilmezse bazel, derlemek için --java_toolchain
değerini kullanır
kodu (ör. derleme sırasında çalıştırılan araçlar için) kullanabilirsiniz. Bu bayrağın temel amacı
çapraz derlemeyi mümkün kılmaktır.
--javabase=(label)
Bu seçenek, bazel run için kullanılacak temel Java yüklemesinin etiketini ayarlar
bazel test ve java_binary
ile oluşturulan Java ikili programları için
java_test
kural. 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 yürütme şeklini 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şlem olarak yürütülmesine neden olur. Bu değer desteği sonlandırıldı. 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ı alana alınan yürütmeyi destekleyen sistemlerde, yerel korumalı alana almayı varsayılan olarak etkinleştirir.local
, komutların yerel alt işlem 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ı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; yalnızca uzak yürütücü ayrı olarak yapılandırıldı.
--strategy mnemonic=strategy
Bu seçenek, komutların nerede ve nasıl yürütüleceğini kontrol ederek --spawn_strategy (ve --genrule_strategy ve anımsatıcı Genrule) anımsatıcı bazında. 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
,local
stratejisini tanımlaması gerekir. Açıklamaları //foo.*.cc ile eşleşiyor ancak //foo/bar ile eşleşmiyor. - Örnek:
--strategy_regexp='Compiling.*/bar=local' --strategy_regexp=Compiling=sandboxed
. "Compiling //foo/bar/baz" komutunu çalıştırırsandboxed
stratejisiyle geri çevrildi Sipariş,local
ile çalıştırılır. - Örnek:
--strategy_regexp='Compiling.*/bar=local,sandboxed'
koşusu '//foo/bar/baz derleniyor'local
stratejisini uyguluyor ve Başarısız olursasandboxed
.
--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ığı, ilerleme durumu her n
olarak yazdırılır
saniye.
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, yerel kaynak miktarını (MB cinsinden RAM ve CPU mantıksal çekirdek sayısı) belirtir.
derleme ve test etkinliklerini yerel olarak çalışacak şekilde planlarken Bazel'in göz önünde bulundurabileceği bazı çözümler var. 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. Varsayılan olarak Bazel,
doğrudan yerel sistemin yapılandırmasından alınan RAM miktarı ve CPU çekirdeği sayısı
--[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 faydalı olabilir
tüm hedeflerin ek yük olmadan derlenip derlenmediğini doğrulamak için
bir araya getirmektir.
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ı, bu "runfiles" ağaç, genelde şubenin kardeşi
veya teste ekler.
Test yürütme sırasında çalıştırma dosyalarına formun yolları kullanılarak erişilebilir
$TEST_SRCDIR/workspace/packagename/filename
Çalışma dosyaları ağacı, testlerin tüm dosyalara erişebilmesini sağlar
açık bir şekilde bağımlılığı olan ürünlerdir. Ö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 siler devreye girer. Böylece, sistemde daha fazla bellekten yürütme aşamasında (yaklaşık %10). 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ı. Bazı durumlarda, tüm paydaşları bir yönteme ihtiyaç duyabilir. Bu seçenek, belirtildiğinde, derleme o davranışı ön koşulları başarıyla oluşturulmuş ancak hataları yok sayar.
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 da,
yalnızca kaynak kodda değişiklik yapıldığında,
yöntemi kuruluşları veya özel
üyeleri olabilir.
--[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 özellik kapatıldığında yürütme aşaması ve sadece ilk iki aşama (yükleme ve analiz) gerçekleşir.
Bu seçenek DERLE dosyalarını doğrulamak ve dosyaları girişlerde hata oluşmasını engeller.
--[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 her şeyi oluşturur.
filtrelenen *_test
ve test_suite
kuralları dahil olmak üzere
teşvik etmek anlamına gelir. 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 derlemesi yerine bir hata bildiriliyor ve 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ı bir kural oluşturulur. Örneğin, C++ ve Java aynı dil alanındaki kurallar tercihen seçilir. Örneğin, aynı tercihe sahip birden çok kural vardır. Bu kural, BUILD dosyası seçildi. Şunu yapmayan açıkça adlandırılmış bir hedef kalıbı hata ile sonuçlanır.
--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 (bunlardan herhangi biri belirtilmişse) ve hiçbir hariç tutulan etiket içermiyor. Derleme etiketi 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. Gerekli etiketler de önünde "+" olmalıdır işaretini tıklayın.
Testleri çalıştırırken Bazel, test hedefleri için --build_tag_filters
değerini yoksayar
bu filtreyle eşleşmeseler bile oluşturulur ve çalıştırılabilir. Bunları oluşturmaktan kaçınmak için filtre uygulayın
--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 için --build_tests_only
yalnızca belirtilen boyuttaki hedefleri test edin. Test boyutu filtresi
izin verilen test boyutu değerlerinin virgülle ayrılmış listesi (küçük,
orta, büyük veya çok büyük) ; isteğe bağlı olarak önüne '-' eklenir belirtmek için kullanılan işaret
test boyutları hariç tutuldu. Ö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 düzey testleri test eder.
Varsayılan olarak, test boyutu filtrelemesi uygulanmaz.
--test_timeout_filters=timeout[,timeout]*
Belirtilirse Bazel, öğeyi test etmek için --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 '-' bulunur. belirtmek için kullanılan işaret
test zaman aşımları hariç tutuldu. Bkz. --test_size_filters
kullanabilirsiniz.
Varsayılan olarak, test zaman aşımı filtrelemesi uygulanmaz.
--test_tag_filters=tag[,tag]*
Belirtilirse Bazel, öğeyi test etmek için --build_tests_only
belirtilmişse) yalnızca en az bir gerekli etikete sahip test hedefleri
(bunlardan herhangi biri belirtilmişse) ve hiçbir hariç tutulan etiket içermiyor. 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. Gerekli etiketler de
önünde "+" olmalıdır işaretini tıklayın.
Örneğin,
% bazel test --test_tag_filters=performance,stress,-flaky //myproject:all
performance
veya
stress
etiketi. Ancak flaky
etiketiyle etiketlenmemişler.
Varsayılan olarak, test etiketi filtreleme uygulanmaz. Ayrıca, kampanyalarınızı filtrelemek için
testin size
ve local
etiketlerinde
uyarlayabilirsiniz.
--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. Bunun yerine, bu hedefleri hariç tutmak için
"-foo" dizesi. Örneğin,
% bazel test --test_lang_filters=foo,bar //baz/...
yalnızca şurada foo_test
veya bar_test
olan hedefleri test eder:
//baz/...
ise
% bazel test --test_lang_filters=-foo,-bar //baz/...
foo_test
ve //baz/...
hariç olmak üzere //baz/...
içindeki tüm hedefleri test eder
bar_test
örnek.
--test_filter=filter-expression
Test çalıştırıcının, testin bir alt kümesini seçmek için kullanabileceği bir filtreyi belirtir çalışıyor. Ç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 özelliğinin özel yorumu
testi çalıştırmaktan sorumlu test çerçevesidir. 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üğü
beklenmedik şekilde yürütüldüğü bir yürütme adımı görebilirsiniz. Bu seçenek
küçük bir performans cezası bulunabilir. Bu nedenle,
gerekli olmadığında da erişim izni verebilirsiniz.
--verbose_explanations
Bu seçenek, oluşturulan açıklamaların ayrıntısını artırır --explain (açıkla) seçeneği etkinleştirildiğinde.
Ö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
etkin değilse
--verbose_explanations
özelliğinin herhangi bir etkisi yoktur.
--profile=file
Bir dosya adı bağımsız değişkenini alan bu seçenek, Bazel'in
profil verilerini bir dosyaya
çıkarmanız gerekir. Veriler daha sonra
bazel analyze-profile
komutudur. 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 durumu mesajlarının görüntülenmesine neden olur; tarafından açıldı varsayılandır. Devre dışı bırakıldığında ilerleme durumu mesajları atlanır.
--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çenek için varsayılan değer 0.02'dir. Yani bazel, ilerlemeyi sınırlandırır.
her 0,02 saniyede bir e-posta gönderebilir.
--show_result=n
Bu seçenek, en sonda sonuç bilgilerinin yazdırılmasını sağlar
sağlayabilirsiniz.bazel build
Varsayılan olarak,
bir hedef belirlendiğinde, Bazel aynı zamanda bir
ve hedef başarıyla güncellendi.
hedefin oluşturduğu çıkış dosyalarının listesi. Birden fazla
hedef belirtildiğinde, sonuç bilgileri görüntülenmez.
Sonuç bilgileri tek bir kod derlemesi için yararlı olsa da,
birden fazla hedef ya da birkaç hedef (ör. bir üst düzey
proje ağacı varsa) bu bilgiler bunaltıcı ve dikkat dağıtıcı olabilir;
bu seçenek cihazın kontrol edilmesine olanak tanır. --show_result
.
Maksimum hedef sayısı olan bir tam sayı bağımsız değişkeni alır
(tam sonuç bilgilerinin yazdırılması gereken yer). Varsayılan olarak
değer 1'dir. Bu eşiğin üzerindeyse hiçbir sonuç bilgisi
ayrı hedefler için gösterilir. Dolayısıyla sıfır, sonucun
bilginin her zaman bastırılmasına yol açar ve çok büyük bir değer,
her zaman yazdırılacak.
Kullanıcılar, dönüşüm verilerini düzenli olarak
küçük bir hedef grubu oluşturmak (örneğin,
sırasında) ve geniş bir hedef grubunu,
(örneğin yeni bir çalışma alanı kurarken ya da
regresyon testleri) için geçerlidir. İlk örnekte, sonuç bilgileri
çok faydalıdır. Her şeyde olduğu gibi
Bu seçenek, dolaylı yoldan
.bazelrc
dosyası.
Dosyalar, kopyalanıp yapıştırılmasını kolaylaştırmak için yazdırılır dosya adını kabuğa ekleyin. "Güncel" veya "başarısız" her hedefe yönelik mesajlar komut dosyaları tarafından kolayca ayrıştırılabilir performansa sahip.
--sandbox_debug
Bu seçenek, işlem için korumalı alan kullanılırken Bazel'in ekstra hata ayıklama bilgileri yazdırmasına neden olur çok önemlidir. 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 komut satırının tamamını yazdırmasına neden olur uygulamanız gerekir.
>>>>> # //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.
(Parantez içindeki parantezler, kabuğunuzu
cd
ve exec
araması; mutlaka kopyalayın!)
Bununla birlikte,
ve sembolik bağlantı ağaçları
oluşturmaktır. Bunlar için görüntülenecek bir 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 konusuna da 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 yardımcı olur.
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
Bu seçenekleri kullanarak Bazel tarafından oluşturulmuş ikili programlar:
kaynak denetimi revizyonu veya çalışma alanıyla ilgili diğer bilgiler gibi ikili programlardır. 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 bilgiler (ör. mevcut kaynak denetimi düzeltmesi).
İşaretin değeri, yerel programa giden bir yol 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 her satırda bir giriş olacak şekilde sıfır veya daha fazla anahtar/değer çifti yazdırmalıdır. sonra sıfır olarak çıkar (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. ("İstikrarlı” ve "değişken" kullanım dışı olduğu için bunları 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 değerlerini içerir
Sözleşme:
"kararlı" tuşlar mümkünse, değerler 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. İçinde 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ı durumda zaman damgası gibi öğeler bulunmamalıdır. Bunun nedeni, zaman damgalarının ve Bazel'in her derlemede damgalı işlemleri yeniden çalıştırmasını sağlar.Bazel her zaman aşağıdaki sabit anahtarları verir:
BUILD_EMBED_LABEL
:--embed_label
değeriBUILD_HOST
: Bazel'in çalıştığı ana makinenin adıBUILD_USER
: Bazel'in kullandığı kullanıcının adı
"değişken" tuşlar değerler sık sık değişebilir. Bazel bunların sürekli değişmesini bekliyor. zaman damgalarının ne olduğunu ve
bazel-out/volatile-status.txt
. dosyası olarak kaydedebilirsiniz. Bu tür durumlarda damgalı işlemleri sürekli olarak yeniden çalıştırıyorsa, Bazel, değişken dosyanın hiçbir zaman değişiklikler başlıklı makaleyi inceleyin. 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
: derleme zamanı olarak Biçimlendirildiyyyy MMM d HH mm ss EEE
(örneğin, 2 01 44 29 Haziran 2023, UTC).
Linux/macOS'te --workspace_status_command=/bin/true
sürümünü geçirebilirsiniz
true
hiçbir şey yapmaz, başarıyla çalışma alanı durumunu almayı devre dışı bırakın (çıkılır
sıfır ile) ve çıktı yazdırır. 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 bilgilerini ikili programlara yerleştirebilir.
Damgalama,
stamp
özelliği için de kullanılmaktadır. Ayrıntılı bilgi için lütfen Build Ansiklopedi'yi inceleyin. Zaman
bir kural stamp = -1
(*_binary
kural için varsayılan) ayarlar, bu seçenek
damgalamanın etkin olup olmadığını belirler.
Bazel, yönetici yapılandırması için oluşturulan ikili programları hiçbir zaman damgalamaz.
ve stamp
özelliğinden bağımsız olarak satın alabilirsiniz. stamp =
0
değerini (*_test
kuralları için varsayılan) ayarlayan kurallar için damgalama
--[no]stamp
. --stamp
değerinin belirtilmesi, şu durumlarda hedefleri yeniden oluşturulmaya zorlamaz:
ve bağımlılıkları değişmedi.
--nostamp
ayarlamak, genel olarak derleme performansı açısından caziptir.
giriş dalgalanmasını azaltır ve derleme önbelleğine almayı en üst düzeye çıkarır.
Platform
Derlemelerin çalışma şeklini yapılandıran ana makineyi 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 kullanılır.
Lütfen Platformlar ve Araç Zincirleri ile ilgili arka plan bilgilerine bakın.
--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 bir hedef kalıbı olarak belirtilebilir. Bu platformlar, WORKSPACE dosyasında belirtilenlerden ö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. Alet Zincirleri tam veya hedef kalıp olarak belirtilebilir. Bu araç zincirleri, WORKSPACE dosyasında bildirilenlerden önce register_toolchains() işlevini kullanın.
--toolchain_resolution_debug=regex
Araç zinciri türü eşleşirse araç zincirlerini bulurken hata ayıklama bilgilerini yazdır
kullanabilirsiniz. Birden fazla normal ifade virgülle ayrılabilir. Normal ifade
başına -
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
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. İlgili içeriği oluşturmak için kullanılan
sembolik bağlantı öneki için varsayılan değer bazel-
şeklindedir
bazel-bin
, bazel-testlogs
ve sembolik bağlantılarını oluşturur
bazel-genfiles
.
Sembolik bağlantılar herhangi bir nedenle oluşturulamazsa ancak derlemenin yine de başarılı olduğu kabul edilir. Özellikle, salt okunur bir dizinde veya sahip olduğunuz dizinde izin verilmelidir. 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. Sembolik bağlantı oluşturmayı tamamen engellemek için bu seçeneği kullanın.Karmaşayı azaltmak için:
--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ış dizinini kullanabilirsiniz. Bu seçeneğin farklı değerlere ayarlanması, dosyaları farklı dizinlere de erişebilir. Örneğ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 istatistikleri, 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
.
Yayınlar için Bazel kullanma
Bazel, geliştirme aşamasında hem yazılım mühendisleri tarafından hem de dağıtım için ikili programları hazırlarken sürüm mühendisleri tarafından gerçekleştirilebilir. devreye giriyor. Bu bölümde, reklam yayınlamaya ilişkin ipuçları, mühendislerden biri.
Ö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:
Şu seçenekler de önemlidir:
--package_path
--symlink_prefix
: birden fazla yapılandırmaya yönelik derlemeleri yönetmek için her yapıyı ayrı ayrı "64 bit" gibi ayrı bir tanımlayıcıyla ve "32 bit" karşılaştırması. Bu seçenekbazel-bin
(vb.) sembolik bağlantılarını ayırt eder.
Testler yapılıyor
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 eşzamanlı olarak derleme ve test gerçekleştirir
belirtilen tüm hedeflerin oluşturulması (test dışı tüm hedefler dahil olmak üzere)
komut satırında belirtilen hedefleri) ve test sonuçlarını
*_test
ve test_suite
hedeflerini
ön koşulları oluşturulur, yani test yürütme
yapıyla iç içe geçmiştir. 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 "otomatik" olarak ayarlanırsa (varsayılan) değerine ayarlanırsa Bazel yalnızca aşağıdaki koşullar geçerlidir:
- Bazel, testteki veya bağımlılıklarındaki değişiklikleri tespit eder
- test
external
olarak işaretlendi --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.
Yanıt "evet" ise önbelleğe alma davranışı "auto" ile aynı olur
test hatalarını önbelleğe alabilir ve test çalıştırmalarını
--runs_per_test
Bu seçeneği
.bazelrc
dosyası
-t
(açık) veya -t-
(kapalı) kısaltmaları
varsayılan değeri geçersiz kılmak için çok kullanışlıdır.
--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 dakika içinde yürütülen bir testin, zaman aşımına uğratılması (çok, çok cömert)
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 ve yayındaki çağrılar iptal edilir.
--notest_keep_going
ve --keep_going
öğelerini belirtmeyin.
--flaky_test_attempts=attempts
Bu seçenek, bir testin maksimum kaç kez denenebileceğini belirtir
herhangi bir nedenle başarısız olursa Başlangıçta başarısız olan ancak sonunda
başarı değerleri 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 amacıyla en fazla 10 deneme yapılmalıdır.
--runs_per_test=[regex@]number
Bu seçenek, her testin kaç kez yürütülmesi gerektiğini 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.
- Aynı parçayı döndüren iki çalıştırma PASS ve FAIL (başarılı) ve başarısız olursa test diğer başarısız çalıştırmalar nedeniyle başarısız).
Tek bir sayı belirtilirse tüm testler o sayı kadar yürütülür.
Alternatif olarak, normal ifade, söz dizimi kullanılarak belirtilebilir
normal ifade@numara'ya dokunun. Bu, --runs_per_test
etkisini hedeflerle sınırlandırır
normal ifadeyle eşleşen (--runs_per_test=^//pizza:.*@4
tüm testleri çalıştırır)
//pizza/
altında 4 kez).
Bu --runs_per_test
biçimi birden fazla 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 kırıkta bir veya daha fazla çalışırsa
başarısız olursa ve aynı parça geçişi için bir veya daha fazla
bayrakla stabil değildir. 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ı test başarısız olursa test çıkışını içeren dosya Bu, varsayılan ayardır değer.terse
,short
gibi, ancak daha kısa: yalnızca yazdır geçemeyen testler hakkında bilgi.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. Ayrıca, başarısız testlerin çıkış günlük dosyası adını 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önderilir. Böylece, 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ğunca 80 karakteri aşmayacak şekilde biçimlendirilmelidir.
--test_tmpdir=path
Yerel olarak yürütülen testler için geçici dizini belirtir. Her test,
ayrı bir alt dizinde yürütülür. Dizin,
her bazel test
komutunun başında temizlenir.
Varsayılan olarak, bazel bu dizini Bazel çıkış temel 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 tek bir değer sağlanırsa tüm test zaman aşımı kategorileri için kullanılabilir.
Alternatif olarak, testler için bağımsız zaman aşımları (kullanıcının sipariş). 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 doğrudan veya açıkça tanımlanmıştır.
Zaman aşımı kategorilerinin zaman aşımı değeri örtülü bir şekilde ayarlanmışsa boyut etiketi. Bu nedenle, 'küçük' boyutu ile ilgili değeri “uzun” zaman aşımı 'büyük' bir ile aynı etkili zaman aşımı düzeyine sahiptir ve testlerde zaman aşımına uğrar.
--test_arg=arg
Her test işlemine komut satırı seçeneklerini/bayrakları/bağımsız değişkenleri geçirir. 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
her test için bir ortam oluşturabilirsiniz. value belirtilmezse
bazel test
öğesini başlatmak için kullanılan kabuk ortamından devralındı
komutuna ekleyin.
Ortama test içinden erişilebilir.
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 (
//
) üretilir. 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:
- Testleri çalıştırmak için kullanılan PATH, ortamınızdaki PATH değerinden farklı olabilir.
--run_under
için mutlak yol kullanmanız gerekebilir komutunu kullanın (command-prefix içindeki ilk kelime). stdin
bağlı değil, bu nedenle--run_under
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çimi seçenekleri altında açıklandığı gibi testleri boyuta, zaman aşımı, tag veya dil. 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, şu kural haricinde bazel build
komutuna benzer:
tek bir hedef ve çalıştırmak için kullanılır. Tipik bir oturumu aşağıda görebilirsiniz:
% 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
, doğrudan çağırmaya benzer ancak aynı değildir
ve Bazel tarafından derlenen ikili program ve bunların davranışı,
ikili değer bir test olup olmadığını kontrol eder.
İkili program bir test değilse geçerli çalışma dizini ikili dosyanın Runfiles ağacı.
İ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. Yine de emülasyon mükemmel değildir ve birden fazla test
bu şekilde çalıştırılamaz (
--test_sharding_strategy=disabled
komut satırı seçeneği kullanılabilir
göz önünde bulundurun)
Aşağıdaki ekstra ortam değişkenleri de ikili program tarafından kullanılabilir:
BUILD_WORKSPACE_DIRECTORY
: geliştirmenizi sağlar.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, reklam grubu için --run_under
seçeneğiyle aynı etkiye sahiptir.
bazel test
(yukarıya bakın),
Ancak bu kural, 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 kaydı çı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 ikili programlarını da yürütebilir. Bu da
belirtilen ortama yakın bir yakınlıkta test ederek
Testler Yazma. 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'in, Make komutuna 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. Herhangi bir
komut satırı seçeneklerini, ardından tüm yapılandırmalar için çıkış dizinini
temizlenecek.
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, şunu kullanarak arka planda kalıcı olarak silebilirsiniz:
--expunge_async
Bazel komutunu çağırmak güvenli
işleminize devam edecektir.
clean
komutu, birincil olarak
artık ihtiyaç duyulmayan çalışma alanları için disk alanı elde etme.
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 kullanılır sorgu ve cquery olmak üzere iki komutla çalışır. Temel kavramlar arasındaki iki komut, sorgunun yükleme aşamasından sonra çalıştırılmasıdır. ve sorgu analiz aşamasından sonra çalıştırılır. Bu araçlar birçok yazılım mühendisliği görevi için 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ı birkaç komut satırı kabul eder
seçeneğini belirleyin. --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.
--[no]tool_deps
seçeneği,
varsayılan olarak etkinleştirildiğinde, hedef olmayan yapılandırmalardaki bağımlılıkların
sorgunun çalıştığı bağımlılık grafiğidir.
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ılan hedef grafiği üzerinde çalışır ve
eylemler, eserler ve bunların ilişkilerine dair 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, şunun için proto
veya textproto
kullanın:
okunabilir bir biçime sahip olmasına dikkat edin.
Ayrıca, aquery komutu normal bir Bazel derlemesinin üzerinde çalışır ve
sunulan seçeneklerdir.
Geleneksel programlama araçlarında da bulunan
query
ancak siblings
, buildfiles
ve
tests
.
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 bağımsız değişken için
konu. Çoğu konu Bazel komutlarıdır (ör. build
)
veya query
, ancak bazı ek yardım konuları var
girin.
--[no]long
(-l
)
Varsayılan olarak, bazel help [topic]
yalnızca
bir konuyla alakalı seçeneklerin özetini içerir. Eğer
--long
seçeneği belirtildiğinde, tür, varsayılan değer
ve her seçeneğin tam açıklaması da yazdırılır.
shutdown
Bazel sunucusu işlemleri, shutdown
kullanılarak durdurulabilir
komutuna ekleyin. Bu komut, Bazel sunucusunun hemen çıkmasıyla
boşta kalır (örneğin, herhangi bir derlemenin tamamlanmasından veya
komutlarının ikisinde birden) kullanılabilir. Daha fazla bilgi için bkz.
İstemci/sunucu uygulaması.
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). Belirtilirse bu, cihazın kapanmasına
tüketilen bellek miktarına bağlıdır. Bu
çok sayıda derleme başlatan komut dosyaları için kullanışlıdır.
bir sızıntı olabileceği gibi, Bazel sunucusunda
özel gün; koşullu yeniden başlatmanın gerçekleştirilmesi bu koşulu önceden ayırır.
info
info
komutu,
sunucu örneği veya belirli bir derleme yapılandırması
kullanabilirsiniz.
(Bunlar, bir derleme yürüten 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 yazdırır
değerini girin. (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'in yayın etiketi "geliştirme sürümü" TV'de yayınlanmayan ikilik.workspace
temel çalışma alanının mutlak yolunu dizin.install_base
: Yüklemenin mutlak yolu dizin (geçerli kullanıcı için bu Bazel örneği tarafından kullanılır). Bazel dahili olarak gereken yürütülebilir dosyalarını bu dizinin altına yükler.output_base
: temel çıkışın mutlak yolu geçerli kullanıcı için bu Bazel örneği tarafından kullanılan dizin birçok yolu vardır. Bazel her şeyini ortaya koyuyor çıktısını burada bulabilirsiniz.execution_root
: yürütmenin mutlak yolu out_base altındaki kök dizinde dizin oluşturun. Bu dizin tüm dosyaların kök dizinidir. çalıştırma sırasında çalıştırılan komutlar tarafından erişilebilir ve dizini oluşturun. Ç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 sunucusunun işlem kimliği bahsedeceğim.server_log
: Bazel sunucusunun hata ayıklama günlük dosyasının mutlak yolu. Bu dosya, Bazel sunucusudur ve Bazel geliştiricileri ile deneyimli kullanıcılar tarafından insanlar tarafından tüketilmesi amaçlanır.command_log
: Komut günlük dosyasının mutlak yolu; Bu, en yeni Bazel komutu.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 komut günlük dosyasının konumu--output_base
öğesinin ayarını değiştirin veya--output_user_root
seçenek.used-heap-size
,committed-heap-size
,max-heap-size
: çeşitli JVM yığın boyutlarını bildirir parametreleridir. 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
: Şu öğelerin kümülatif sayısı: başlangıcından bu yana toplanan çöp toplama verileri ve harcanan zaman nasıl kullanacağınızı göstereceğim. Bu değerlerin her seçeceğiz.package_path
: İzlenecek yolların iki nokta üst üste ile ayrılmış listesi bazel'e göre paket aradı. Şununla aynı biçimdedir:--package_path
komut satırı bağımsız değişkeni derleme.
Örnek: Bazel sunucusunun işlem kimliği.
% bazel info server_pid 1285
Yapılandırmaya özel 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
: mutlak yolu bildirir tarafından oluşturulan programlarınbazel-*
dizinleri birkaç önemli nokta vardır. Bu her zaman olmasa da genellikle bir komuttan sonra ana çalışma alanı dizininde oluşturulanbazel-*
sembolik bağlantıları nasıl oluşturulduğunu göstereceğim. 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.- Eksiksiz
"Yap" ortam.
--show_make_env
işareti belirtildi, mevcut yapılandırmanın "Make" ortam (CC
,GLIBC_VERSION
vb.) de gösterilir. 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. Şu durumlarda bile doğru olacaktır:
bazel-bin
sembolik bağlantısı bir nedenden dolayı oluşturulamıyor
(örneğin, salt okunur bir dizinden derleme yapıyorsanız).
% 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, derlenen Bazel hakkındaki sürüm ayrıntılarını yazdırır değişiklik listesi ve tarih de dahil olmak üzere her iki ikili programı da kapsar. Bu raporlar, en güncel bilgilere sahip olup olmadığınızı hata bildiriyorsanız bu sayfayı inceleyin. İlginç değerlerden bazıları şunlardır:
changelist
: Bu sürümünün değişiklik listesi Bazel serbest bırakıldı.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 kaynaklar güncellenemez
AndroidManifest.xml
, yerel kod veya Java'dan referans alındı
kaynaklar (Class.getResource()
tarafından referans verilenler gibi). Bu
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ümlere sahip bir cihaz kullanıyorsanız şunları göz önünde bulundurun:
--split_apks
işareti.
--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. Lütfen
--incremental
işaret
--split_apks
kullanılırken gerekli değildir.
--start_app
Yükleme işleminden sonra uygulamayı temiz durumda başlatır. --start=COLD
etiketine eş değer.
--debug_app
Yükleme işleminden sonra 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 nasıl başlatılması gerektiği. Desteklenen _start_type_ öğeleri şunlardır:
NO
Uygulamayı başlatmaz. Bu, varsayılan ayardır.COLD
Yükleme işleminden sonra uygulamayı temiz durumdan başlatır.WARM
Ek 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ı gösterir.
Varsayılan ad,
--android_sdk
.
--adb_arg=serial
adb
için fazladan bağımsız değişkenler. Bunlar,
komut satırından başlar 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ü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 durumunu kontrol edin. 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 yalnızca olası işlemleri özetleyen yardım mesajını yazdırır seçenekleri sunar. 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 önbellek içeriğini döküm haline getirir.--packages
, paket önbellek içeriğini atar.--skyframe
, dahili Bazel bağımlılık grafiğinin durumunu dökümler.--rules
, her bir kural ve en boy sınıfı için kural özetini atar. sayısını gösterir. Buna hem yerel kurallar hem de Starlark kuralları dahildir. Bellek izleme etkinse kuralların yazdırılır.--skylark_memory
bir pprof ile uyumlu .gz dosyasını belirtilen yola taşıyın. Bunun çalışması için bellek izlemeyi etkinleştirmeniz gerekir.
Bellek izleme
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 komutta bu seçenekleri Bazel'a iletmeyi unutmayın. Aksi halde sunucu yeniden başlat.
Ö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 JSON izleme profili
toplanan kişiselleştirilmiş sonuçlar.
canonicalize-flags
canonicalize-flags
komutuna basın. Bu komut, Bazel komutuna ilişkin seçeneklerin listesini alır ve
aynı etkiye sahip seçeneklerdir. 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ı seçenekler arasından tercih yapmak için kullanılabilir:
komutlarının ikisine katlanır. Şu anda yalnızca build
ve test
desteklenir. 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, Java'nın başlatılmasını etkiler. ve Bazel sunucu işlemi tarafından kullanılan bir sanal makinedir ve bunlar, komutlar ve kontrol listesi kullanılabilir. Bir Bazel sunucusu çalıştırılıyorsa ve başlatma seçenekleri eşleşmiyorsa başlatılması gerekir.
Bu bölümde açıklanan tüm seçenekler
--key=value
veya --key value
söz dizimine uygun olmalıdır. Ayrıca, bu seçenekler Bazel'in adından önce görünmelidir
komutuna ekleyin. Bunları bir .bazelrc
dosyasında listelemek için startup --key=value
kullanın.
--output_base=dir
Bu seçenek, yazılabilir dizindir. 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 komut, komutu işleyecek.
Varsayılan olarak çıkış tabanı, kullanıcının giriş adından türetilir.
ve çalışma alanı dizininin adı (aslında MD5 özeti)
normal 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 eşzamanlı olarak çalışır (çünkü
kabuk &
operatörü), her biri farklı bir Bazel kullanarak
örneği (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. Geçmişte, bunun, çeşitli kullanıcılar arasında paylaşılan bir dizine yönlendirmesine izin verildi ancak artık buna izin verilmiyor. Buna bir kez izin verilebilir sorun #11100 giderildiğinden emin olun.
--output_base
seçeneği belirtilirse bu seçenek geçersiz kılınır
çıkış tabanını hesaplamak için --output_user_root
kullanarak.
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, herhangi bir Bazel komutundan önce görünmelidir. Örneğin:
% bazel --server_javabase=/usr/local/buildtools/java/jdk11 build //foo
Bu işaret, Bazel alt işlemleri tarafından kullanılan uygulamalar, testler, araçlar vb. Derleme seçeneklerini kullanın: --javabase veya --host_javabase kullanın.
Bu işaret daha önce --host_javabase
olarak adlandırılıyordu (bazen
"sol taraf" --host_javabase
), ancak
derleme işareti --host_javabase (bazen
"sağ taraf" --host_javabase
) bilgileri gösterilir.
--host_jvm_args=string
Bazel'in bulunduğu Java sanal makinesine iletilecek 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. Lütfen Bu işaretin ayarlanması nadiren gerekir. Ayrıca, dizelerin boşlukla ayrılmış listesini, her biri ayrı bir JVM bağımsız değişkeni olarak yorumlanır, ancak bu özellik yakında desteği sonlandırıldı.
Bu durumun
alt işlemleri: uygulamalar, testler, araçlar vb. Geçmek için
Yürütülebilir Java programlarına yönelik JVM seçenekleri (bazel
run
veya komut satırında)
--jvm_flags
argümanı
tüm java_binary
ve java_test
programları
destek. 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 birincil olarak kullanım için 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ştirilmiş JRE mevcut değilse yüklü JRE'ye geri döner.
--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 bir komut için Java işlemi sunar. Bu işlem, sinyal işleme, iş kontrolü ve ortam ile ilgili anlamlar değişkeni devralmadır ve Chrome'da 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 sunucusu işleminin saniye cinsinden ne kadar süreceğini belirtir
son istemci isteğinden sonra, istemden çıkmadan önce beklemelidir. İlgili içeriği oluşturmak için kullanılan
varsayılan değer 10800'dir (3 saat). --max_idle_secs=0
,
Bazel sunucusu işlemi süresiz olarak devam edecek.
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 ön gönderme komut dosyası
bir kullanıcının beklemede olduğundan emin olmak için bazel query
yöntemini çağırın
istenmeyen bağımlılıklar yaratmaz. Ancak,
daha önce söz konusu çalışma alanında yeni bir derleme yapmamışsa
ön gönderme komut dosyasının hemen bir Bazel sunucusu başlatmasını
günün geri kalanında boşta kalmasını sağlayabilirsiniz.
Şurada küçük bir --max_idle_secs
değeri belirterek:
komut dosyası, eğer bunun yeni bir
o sunucu hemen çıkar, ancak bunun yerine
bir sunucu zaten çalışırsa o sunucu çalışmaya devam eder
cihaz normal süre boyunca boşta kalana kadar. Tabii ki mevcut
sunucunun boşta kalma zamanlayıcısı sıfırlanacak.
--[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.
max_idle_secs değerine karşılık gelen bir boşta kalma kontrolü çalıştırmaya ek olarak, derleme sunucusu sunucu bir süre boşta kaldıktan sonra kullanılabilir sistem belleğini izlemeye başlar. Kullanılabilir sistem belleği kritik derecede azalırsa sunucudan çıkılır.
--[no]block_for_lock
Etkinleştirilirse Bazel, sunucu kilidinin tamamlanması gerekir. Devre dışı bırakılırsa Bazel kilidi hemen edinemezse yanlışlıkla çıkar ve devam edebilir.
Geliştiriciler uzun bekleme sürelerinden kaçınmak için bunu gönderme öncesi kontrollerde kullanabilir. aynı istemcide başka bir Bazel komutu ile değiştirebilirsiniz.
--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.
Bkz. "man 2 sched_setscheduler". Bu politika, sistemin daha iyi hale getirilmesini sağlayabilir
etkileşimlerine ek sonuçlar sağlar.
Ç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 vurgulamak için renkleri kullanıp kullanmayacağını belirler çıkışını ekranda görebilirsiniz.
Bu seçenek yes
değerine ayarlanırsa renk çıkışı etkinleştirilir.
Bu seçenek auto
değerine ayarlanırsa Bazel, renk çıkışını yalnızca şu durumlarda kullanır:
çıkış bir terminale ve TERM ortam değişkenine gönderiliyor.
dumb
, emacs
veya xterm-mono
dışında bir değere ayarlanmış.
Bu seçenek no
değerine ayarlanırsa renk çıkışı devre dışı bırakılır.
çıkışın bir terminale gidip gitmemesinden ve
ayarından emin olun.
--config=name
Şu listeden ek yapılandırma bölümünü seçer:
the rc files; command
için
command:name
adresindeki seçenekleri de alır. Olabilir
çeşitli yapılandırma bölümlerinden işaretler eklemek için birden çok kez belirtilir. 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, daha az kaydırma verisi ve daha fazla
basit ve okunması kolay bir çıkış akışı sağladı. Bu nedenle,
--color
Bu seçenek yes
değerine ayarlanırsa imleç denetimlerinin kullanımı etkinleştirilir.
Bu seçenek no
değerine 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 İletinin görüntülendiği saati belirten Bazel.