Bazel birçok seçeneği kabul eder. Bazı seçenekler sık sık farklılık gösterir (örneğin,
--subcommands
) bazı derlemelerde aynı kalırken (örneğin,
--package_path
) tıklayın. Bu değiştirilmeyen seçenekleri her derlemede belirtmekten kaçınmak için
(ve diğer komutlar) kullanıyorsanız
.bazelrc
.
.bazelrc
dosyaları nerede?
Bazel, aşağıdaki konumlarda isteğe bağlı yapılandırma dosyaları arar:
sırayla bakın. Seçenekler bu sıraya göre yorumlanır.
sonraki dosyalardaki seçenekler, bir önceki dosyadaki değeri geçersiz kılabilir
ve çatışma ortaya çıkabilir. Bu dosyalardan hangilerinin yükleneceğini kontrol eden tüm seçenekler
başlatma seçenekleridir; yani bazel
ve
önce komut ekleyin (build
, test
vb.).
--nosystem_rc
yoksa sistem RC dosyası.Yol:
- Linux/macOS/Unixes'te:
/etc/bazel.bazelrc
- Windows'da:
%ProgramData%\bazel.bazelrc
Bu dosya mevcut değilse hata olmaz.
Sistem tarafından belirtilen başka bir konum gerekliyse, sistem tarafından Bazel ikili programı,
BAZEL_SYSTEM_BAZELRC_PATH
değerini geçersiz kılar//src/main/cpp:option_processor
Sistem tarafından belirtilen konum, ortam değişkeni referansları içerebilir. ör. Unix'te${VAR_NAME}
veya Windows'da%VAR_NAME%
.- Linux/macOS/Unixes'te:
--noworkspace_rc
yoksa çalışma alanı RC dosyası.Yol: Workspace dizininizdeki
.bazelrc
(anaWORKSPACE
dosya) ekleyebilirsiniz.Bu dosya mevcut değilse hata olmaz.
--nohome_rc
yoksa ana sayfa RC dosyası.Yol:
- Linux/macOS/Unixes'te:
$HOME/.bazelrc
- Windows'da: Varsa
%USERPROFILE%\.bazelrc
veya%HOME%/.bazelrc
Bu dosya mevcut değilse hata olmaz.
- Linux/macOS/Unixes'te:
Kullanıcı tarafından belirtilen RC dosyası (
--bazelrc=file
Bu işaret isteğe bağlıdır, ancak birden çok kez belirtilebilir.
/dev/null
, diğer tüm--bazelrc
'ların yoksayılacağını belirtir. bir kullanıcı rc dosyası için aramayı devre dışı bırakmak açısından kullanışlıdır inşa eder.Örneğin:
--bazelrc=x.rc --bazelrc=y.rc --bazelrc=/dev/null --bazelrc=z.rc
x.rc
vey.rc
okundu.z.rc
, önceki/dev/null
nedeniyle yoksayıldı.
Bazel, bu isteğe bağlı yapılandırma dosyasına ek olarak global dosyası olarak kaydedebilirsiniz. Daha ayrıntılı bilgi için global bazelrc bölümüne bakın.
.bazelrc
söz dizimi ve anlamları
Tüm UNIX "rc" öğeleri gibi .bazelrc
dosyası, satır tabanlı bir metin dosyasıdır
yardımcı olur. Boş satırlar ve #
(yorumlar) ile başlayan satırlar yoksayılır. Her biri
satır bir kelime dizisi içerir ve bu kelimeler aynı
kuralları olarak tanımlayacağım.
İçe aktarılanlar
import
veya try-import
ile başlayan satırlar özeldir: yüklemek için bunları kullanın
diğer "rc" dosyası olarak da kaydedebilir. Çalışma alanı köküne göre bir yol belirtmek için
import %workspace%/path/to/bazelrc
yaz.
import
ile try-import
arasındaki fark,
import
adlı dosya eksik (veya okunamıyor), ancak try-import
için eksik
dosyası olarak kaydedebilirsiniz.
İçe aktarma önceliği:
- İçe aktarılan dosyadaki seçenekler, daha önce belirtilen seçeneklere göre önceliklidir içe aktarma beyanı.
- İçe aktarma ifadesinden sonra belirtilen seçenekler, içe aktarılan dosyada seçenekleri var.
- Daha sonra içe aktarılan dosyalardaki seçenekler, daha önce içe aktarılan dosyalara göre önceliklidir.
Seçenek varsayılanları
Bazelrc'teki çoğu satır, varsayılan seçenek değerlerini tanımlar. Her bir satırdaki ilk kelime satırı, bu varsayılanların ne zaman uygulandığını belirtir:
startup
: Komuttan önce gelen ve açıklanan başlatma seçenekleribazel help startup_options
içinde.common
: Destekleyen tüm Bazel komutlarına uygulanması gereken seçenekler gerekir. Bir komut bu şekilde belirtilen bir seçeneği desteklemiyorsa seçeneği, başka bir Bazel komutu için geçerli olduğu sürece yoksayılır. Bunun yalnızca seçenek adları için geçerli olduğunu unutmayın: Geçerli komut kabul ediyorsa belirtilen adı desteklemeyen ancak belirtilen değeri desteklemeyen bir seçenek başarısız olur.always
: Tüm Bazel komutları için geçerli seçenekler. Komut size bir seçeneği desteklemesi durumunda başarısız olacaktır.command
: Seçeneklerin etkinleştirileceğibuild
veyaquery
gibi Bazel komutu geçerlidir. Bu seçenekler, belirtir. (Örneğin,test
,build
öğesinden devralır.)
Bu satırların her biri birden çok kez kullanılabilir ve
ilk kelime, tek bir satırda görünmüş gibi birleştirilir. (CVS kullanıcıları,
"İsviçre bıçağı" bulunan başka bir alet komut satırı arayüzünde
söz dizimi .cvsrc
ile benzerdir.) Örneğin, şu satırlar:
build --test_tmpdir=/tmp/foo --verbose_failures
build --test_tmpdir=/tmp/bar
şu şekilde birleştirilir:
build --test_tmpdir=/tmp/foo --verbose_failures --test_tmpdir=/tmp/bar
Bu nedenle etkili işaretler --verbose_failures
ve --test_tmpdir=/tmp/bar
şeklindedir.
Seçenek önceliği:
- Komut satırındaki seçenekler rc dosyalarındaki seçeneklere göre her zaman önceliklidir.
Örneğin, bir rc dosyası
build -c opt
diyor ancak komut satırı işareti-c dbg
için komut satırı işareti öncelikli olur. rc dosyasında, öncelik belirliliğe göre belirlenir: daha fazla belirli komutlar, daha az spesifik olan komutun satırlarına göre önceliklidir.
Belirginlik, kalıtımla tanımlanır. Bazı komutlar, diğer komutları kullanarak devralınan komutu tabandan daha spesifik hale getirir komutuna ekleyin. Örneğin
test
,build
komutundan devralır. Böylece tümbazel build
işaretleribazel test
için geçerlidir ve tümbuild
satırları, Aynı seçenek içintest
satırı yoksabazel test
. Rc dosyanın mesajı:test -c dbg --test_env=PATH
build -c opt --verbose_failures
ardından
bazel build //foo
-c opt --verbose_failures
kullanacak,bazel test //foo
ise--verbose_failures -c dbg --test_env=PATH
adresini kullanacak.Devralma (belirginlik) grafiği şu şekildedir:
- Her komut
common
öğesinden devralır - Aşağıdaki komutlar şuradan devralınır (ve şundan daha spesifiktir):
build
:test
,run
,clean
,mobile-install
,info
,print_action
,config
,cquery
veaquery
coverage
,test
kaynağından devralır
- Her komut
Aynı komut için seçenekleri eşit belirginlikte belirten iki satır dosyada göründükleri sıraya göre ayrıştırılır.
Bu öncelik kuralı dosya sıralamasıyla eşleşmediğinden, rc dosyalarındaki öncelik sırasını izlerseniz okunabilirlik düzeyi:
common
seçenekleri üst taraftadır ve en spesifik komutlarla yer alır. Böylece seçeneklerin okunma sırası uygulandıkları sırayla aynıdır. Bu daha sezgiseldir.
Bir rc dosyasının bir satırında belirtilen bağımsız değişkenler, seçenekleri (ör. derleme hedeflerinin adları vb.) değil. Bunlar, örneğin aynı dosyalarda belirtilen seçeneklere kıyasla, eşdüzeylerinden daha düşük önceliğe sahiptir. eklenir ve her zaman açık bir liste olmayan seçenek bağımsız değişkenleridir.
--config
rc dosyası, seçenek varsayılanlarını ayarlamanın yanı sıra seçenekleri gruplandırmak için de kullanılabilir.
ve yaygın gruplar için bir kısaltma sunacaktır. Bu işlem, bir :name
soneki komuta ekleyin. Bu seçenekler varsayılan olarak yoksayılır, ancak
--config=name
seçeneği sunulduğunda dahil edilir.
veya bir .bazelrc
dosyasında yinelemeli olarak, hatta
başka bir yapılandırma tanımıdır. command:name
tarafından belirtilen seçenekler yalnızca
uygun komutlar için yukarıda açıklanan öncelik sırasına göre genişletilir.
--config=foo
, şurada tanımlanan seçeneklere genişler:
rc dosyaları "yerinde" Böylece seçenekler
yapılandırma için belirtilen, --config=foo
seçeneği ile aynı önceliğe sahiptir
elde etti.
Bu söz dizimi, etiket tanımlamak için startup
kullanımını kapsamaz
başlangıç seçeneklerini inceleyin. Ayar
.bazelrc dosyasındaki startup:config-name --some_startup_option
yoksayılır.
--enable_platform_specific_config
.bazelrc
ürünündeki platforma özel yapılandırmalar,
--enable_platform_specific_config
. Örneğin, ana makine işletim sistemi Linux ise
build
komutu çalıştırıldığında build:linux
yapılandırması
otomatik olarak etkinleştirilir. Desteklenen işletim sistemi tanımlayıcıları şunlardır: linux
, macos
, windows
,
freebsd
ve openbsd
. Bu işaretin etkinleştirilmesi,
Linux'ta --config=linux
, Windows'da --config=windows
vb.
--enable_platform_specific_config hakkında bilgi edinin.
Örnek
Aşağıda örnek bir ~/.bazelrc
dosyası verilmiştir:
# Bob's Bazel option defaults
startup --host_jvm_args=-XX:-UseParallelGC
import /home/bobs_project/bazelrc
build --show_timestamps --keep_going --jobs 600
build --color=yes
query --keep_going
# Definition of --config=memcheck
build:memcheck --strip=never --test_timeout=3600
Bazel'in davranışını yöneten diğer dosyalar
.bazelignore
Çalışma alanı içindeki dizinleri belirtebilirsiniz
Örneğin, ilgili projeler gibi Bazel'ın göz ardı etmesini
başka derleme sistemleri de kullanabilirsiniz. Şu ada sahip dosyayı yerleştirin:
Çalışma alanının kökünde .bazelignore
var
ve Bazel'ın yok saymasını istediğiniz dizinleri, her
satırında görünür. Girişler, çalışma alanı köküne göre değişir.
Global bazelrc dosyası
Bazel, isteğe bağlı bazelrc dosyalarını şu sırayla okur:
- Sistem rc dosyası
etc/bazel.bazelrc
konumunda bulunuyor. - Workspace rc dosyası
$workspace/tools/bazel.rc
adresinde. - Ana sayfa rc dosyası
$HOME/.bazelrc
konumunda bulunuyor
Burada listelenen her bazelrc dosyasının aşağıdakileri yapmak için kullanılabilecek bir işareti vardır:
bunları devre dışı bırakma (ör. --nosystem_rc
, --noworkspace_rc
, --nohome_rc
). Şunları yapabilirsiniz:
--ignore_all_rc_files
başlatma seçeneği sunulur.