Bazel birçok seçenek kabul eder. Bazı seçenekler sıklıkla farklılık gösterir (ör. --subcommands
), diğerleri birkaç derlemede (--package_path
gibi) aynı kalır. Her derlemede (ve diğer komutlarda) değişmeden bu seçenekleri
belirtmekten kaçınmak için, seçenekleri bir yapılandırma dosyasında
.bazelrc
adlı bir yapılandırma dosyasında belirtebilirsiniz.
.bazelrc
dosyaları nerede?
Bazel, isteğe bağlı yapılandırma dosyalarını aşağıdaki konumlarda
aşağıda gösterilen sırayla arar. Seçenekler bu sırayla yorumlanır. Bu nedenle, çakışma olması durumunda sonraki dosyalardaki seçenekler önceki dosyalardan alınan bir değeri geçersiz kılabilir. Bu dosyalardan hangilerinin yükleneceğini kontrol eden tüm seçenekler başlangıç seçenekleridir. Yani, bazel
seçeneğinden sonra ve komuttan (build
, test
vb.) önce gelmeleri gerekir.
--nosystem_rc
yoksa sistem RC dosyası.Yol:
- Linux/macOS/Unix'lerde:
/etc/bazel.bazelrc
- Windows'da:
%ProgramData%\bazel.bazelrc
Bu dosya mevcut değilse bu bir hata değildir.
Sistem tarafından belirtilen başka bir konum gerekirse
//src/main/cpp:option_processor
içindekiBAZEL_SYSTEM_BAZELRC_PATH
değerini geçersiz kılarak özel bir Bazel ikili programı oluşturmanız gerekir. Sistem tarafından belirtilen konum, Unix'te${VAR_NAME}
veya Windows'da%VAR_NAME%
gibi ortam değişkeni referansları içerebilir.- Linux/macOS/Unix'lerde:
--noworkspace_rc
yoksa workspace RC dosyası.Yol: Çalışma alanı dizininizdeki
.bazelrc
(anaWORKSPACE
dosyasının yanında).Bu dosya mevcut değilse bu bir hata değildir.
--nohome_rc
yoksa ev RC dosyası.Yol:
- Linux/macOS/Unix'lerde:
$HOME/.bazelrc
- Windows'da: Varsa
%USERPROFILE%\.bazelrc
veya%HOME%/.bazelrc
Bu dosya mevcut değilse bu bir hata değildir.
- Linux/macOS/Unix'lerde:
--bazelrc=file
ile belirtilirse kullanıcı tarafından belirtilen RC dosyasıBu işaret isteğe bağlıdır, ancak birden çok kez de belirtilebilir.
/dev/null
, diğer tüm--bazelrc
öğelerinin yoksayılacağını belirtir. Bu, sürüm derlemelerinde olduğu gibi kullanıcı rc dosyası aramasını devre dışı bırakmak için yararlıdır.Ö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ı.
Bu isteğe bağlı yapılandırma dosyasına ek olarak, Bazel bir global rc dosyası arar. Daha fazla bilgi için global pazar bölümünü inceleyin.
.bazelrc
söz dizimi ve anlamlar
Tüm UNIX "rc" dosyaları gibi .bazelrc
dosyası da satır tabanlı dil bilgisi içeren bir metin dosyasıdır. Boş satırlar ve #
(yorumlar) ile başlayan satırlar yoksayılır. Her satır, Bourne kabuğuyla aynı kurallara göre tokenlere ayrılan bir kelime dizisi içerir.
İçe Aktarımlar
import
veya try-import
ile başlayan satırlar özeldir: Diğer "rc" dosyalarını yüklemek için bunları kullanın. Çalışma alanı köküyle göreli bir yol belirtmek için import %workspace%/path/to/bazelrc
yazın.
import
ile try-import
arasındaki fark, Bazel'in import
dosyasının eksik olması (veya okunamaması) durumunda başarısız olması, ancak try-import
içeren bir dosya için bu işlemi gerçekleştirmemesidir.
İçe aktarma önceliği:
- İçe aktarılan dosyadaki seçenekler, içe aktarma ifadesinden önce belirtilen seçeneklere göre önceliklidir.
- İçe aktarma ifadesinden sonra belirtilen seçenekler, içe aktarılan dosyadaki seçeneklere göre önceliklidir.
- Daha sonra içe aktarılan dosyalardaki seçenekler, daha önce içe aktarılan dosyalara göre önceliklidir.
Seçenek varsayılanları
Bazelrc'in çoğu satırı varsayılan seçenek değerlerini tanımlar. Her satırdaki ilk kelime bu varsayılanların ne zaman uygulanacağını belirtir:
startup
: Komutun önüne geçen vebazel help startup_options
bölümünde açıklanan başlatma seçenekleri.common
: Tüm Bazel komutları için geçerli olan seçenekler.command
: Seçeneklerin geçerli olduğubuild
veyaquery
gibi Bazel komutu. Bu seçenekler, belirtilen komuttan devralan tüm komutlar için de geçerlidir. (Örneğin,test
,build
öğesinden devralır.)
Bu satırların her biri birden fazla kez kullanılabilir ve ilk kelimeyi izleyen bağımsız değişkenler, tek bir satırdaymış gibi birleştirilir. ("İsviçre bıçağı" komut satırı arayüzüne sahip başka bir araç olan CVS'yi kullananlar, .cvsrc
söz dizimine benzer bir kelime bulacaklar.) Ö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
'dir.
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
yazıyorsa ancak komut satırı işareti-c dbg
ise komut satırı işareti öncelikli olur. Rc dosyasında öncelik belirliliğe göre belirlenir: Daha spesifik bir komutun satırları, daha az spesifik bir komutun satırlarına göre önceliklidir.
Belirginlik, kalıtımla tanımlanır. Bazı komutlar, diğer komutlardan seçenekleri devralır. Bu da devralan komutu temel komuttan daha spesifik hale getirir. Örneğin,
test
,build
komutundan devralır. Bu nedenle, aynı seçenek içintest
satırı olmadığı sürece tümbazel build
işaretleribazel test
için geçerli olur ve tümbuild
satırlarıbazel test
için de geçerli olur. RSK dosyası şöyleyse:test -c dbg --test_env=PATH
build -c opt --verbose_failures
ardından
bazel build //foo
-c opt --verbose_failures
,bazel test //foo
ise--verbose_failures -c dbg --test_env=PATH
kullanır.Devralma (spesifiklik) grafiği:
- Her komut
common
öğesinden devralır - Aşağıdaki komutlar şuralardan devralınır (ve daha spesifiktir):
build
:test
,run
,clean
,mobile-install
,info
,print_action
,config
,cquery
veaquery
coverage
,test
adlı kuruluş biriminden devralır
- Her komut
Aynı komuta ilişkin seçenekleri eşit derecede belirlilikte belirten iki satır, dosyada göründükleri sıraya göre ayrıştırılır.
Bu öncelik kuralı, dosya sırasıyla eşleşmediğinden rc dosyalarındaki öncelik sırasını izlediğinizde okunabilirlik elde edilir: Üst kısımdaki
common
seçenekleriyle başlayın ve en belirgin komutlarla dosyanın alt kısmındaki sona erdirin. Bu şekilde, seçeneklerin okunma sırası, uygulandıkları sıra ile aynı olur. Bu da daha sezgisel bir yöntemdir.
Bir rc dosyasının satırında belirtilen bağımsız değişkenler, derleme hedeflerinin adları gibi seçenek olmayan bağımsız değişkenler içerebilir. Bunlar, aynı dosyalarda belirtilen seçeneklerde olduğu gibi, komut satırında eşdüzey öğelerine göre daha düşük önceliğe sahiptir ve her zaman seçenek olmayan bağımsız değişkenlerin açık listesinin başına eklenir.
--config
Crc dosyası, seçenek varsayılanlarını ayarlamaya ek olarak, seçenekleri gruplandırmak ve yaygın gruplamalar için bir kestirme sağlamak için de kullanılabilir. Bu işlem, komuta bir :name
son eki eklenerek yapılır. Bu seçenekler varsayılan olarak yoksayılır ancak başka bir yapılandırma tanımının içinde bile, tekrarlı olarak komut satırında veya bir .bazelrc
dosyasında --config=name
seçeneği mevcut olduğunda dahil edilir. command:name
tarafından belirtilen seçenekler, yalnızca geçerli komutlar için yukarıda açıklanan öncelik sırasına göre genişletilir.
--config=foo
, yapılandırma için belirtilen seçeneklerin --config=foo
seçeneğiyle aynı önceliğe sahip olması amacıyla rc dosyalarında "yerinde" tanımlanan seçeneklere genişletilir.
Bu söz dizimi, başlangıç seçeneklerini ayarlamak için startup
özelliğinin kullanımını kapsamaz. .bazelrc dosyasındaki startup:config-name --some_startup_option
ayarları yoksayılır.
Örnek
Örnek bir ~/.bazelrc
dosyası aşağıda 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'ın davranışını yöneten diğer dosyalar
.bazelignore
Çalışma alanında, Bazel'ın yoksaymasını istediğiniz dizinleri (ör. diğer derleme sistemlerini kullanan ilgili projeler) belirtebilirsiniz. Çalışma alanının kök dizinine .bazelignore
adlı bir dosya yerleştirin ve Bazel'ın yoksaymasını istediğiniz dizinleri, her satıra bir tane gelecek şekilde ekleyin. Girişler, çalışma alanı köküyle görelidir.
Global bazelrc dosyası
Bazel, isteğe bağlı Bazelrc dosyalarını şu sırayla okur:
- Sistem rc dosyası: etc/bazel.bazelrc
.
- $workspace/tools/bazel.rc
konumunda bulunan Workspace rc dosyası.
- Ana sayfa rc dosyası $HOME/.bazelrc
adresinde yerelleştirildi
Burada listelenen her bazelrc dosyasının devre dışı bırakılması için kullanılabilecek karşılık gelen bir işareti vardır (ör. --nosystem_rc
, --noworkspace_rc
, --nohome_rc
). Ayrıca --ignore_all_rc_files
başlatma seçeneğini ileterek Bazel'in tüm bazelrc'leri yoksaymasını sağlayabilirsiniz.