Not: Bu bölüm, Bazel geliştiricileri için hazırlanmıştır ve bilgi sahibi olmanızı sağlar.
Çeşitli SkyFunction sınıfları, araç zinciri çözümleme işlemini uygular:
RegisteredToolchainsFunction
veRegisteredExecutionPlatformsFunction
mevcut araç zincirlerini ve yürütme platformlarını bulmak için WORKSPACE dosyasını seçin.SingleToolchainResolutionFunction
her yürütme platformu için tek bir araç zinciri türüne çözüm getirir. Yani, en iyi kayıtlı araç zincirini bulduğu ve kullandığı her yürütme şu kriterlere göre:- Araç zincirinin ve hedef platformun uyumlu olduğundan emin olmak için
target_compatible_with
özelliği için değer ekleyebilirsiniz. - Araç zincirinin ve yürütme platformunun uyumlu olduğundan emin olun.
exec_compatible_with
özelliğini kontrol etmek. - Birden fazla araç zinciri kalırsa en yüksek öncelikli olanı seçin ( birini seçin.
- Araç zincirinin ve hedef platformun uyumlu olduğundan emin olmak için
ToolchainResolutionFunction
arama İstenen her araç zinciri türü içinSingleToolchainResolutionFunction
ve Ardından kullanılacak en iyi yürütme platformunu belirler.- Öncelikle, geçerli bir araç zincirini kullanmaya devam edin.
- Birden fazla yürütme platformu ayrılırsa en yüksek öncelikli olanı seçin
bir (ilk kaydettirilen).
- Yürütme platformu zaten araç zinciri tarafından ayarlanmışsa ilk olarak aşağıda açıklandığı şekilde seçilecektir.
Araç Zincirleri ve Yapılandırmalar'da açıklandığı gibi,
bağımlılığın bir hedeften araç zincirine olan bağımlılığı,
yürütme platformunu her ikisi için de aynı olmaya zorlar. Adına rağmen
"araç zinciri geçişi" varsa bu bir yapılandırma olarak uygulanmaz
yerine, bu geçişin özel bir alt sınıfı olarak
ConfiguredTargetKey
, şu şekilde adlandırıldı:
ToolchainDependencyConfiguredTargetKey
.
ConfiguredTargetKey
sınıfındaki diğer verilere ek olarak bu alt sınıf şunları da içerir:
yürütme platformunun etiketi. ToolchainResolutionFunction
şu olduğunda:
zorunlu yürütme platformu fark etmeksizin hangi yürütme platformunun kullanılacağını
ToolchainDependencyConfiguredTargetKey
değeri geçerli olsa bile
o en yüksek öncelikli değilse
Not: Zorunlu yürütme platformu geçerli değilse (çünkü hiçbir zaman kural ya da hedefteki yürütme kısıtlamaları nedeniyle), bunun yerine en yüksek öncelikli geçerli yürütme platformu kullanılır.