Not: Bu bölüm Bazel geliştiricileri için hazırlanmıştır ve kural yazarları tarafından gerekli değildir.
Çeşitli SkyFunction sınıfları araç zinciri çözümleme sürecini uygular:
RegisteredToolchainsFunction
veRegisteredExecutionPlatformsFunction
mevcut araç zincirlerini ve yürütme platformlarını bulmak için yapılandırma ve WORKSPACE dosyası.SingleToolchainResolutionFunction
her yürütme platformu için tek bir araç zinciri türüne çözüm getirir. Yani her yürütme platformu için aşağıdaki ölçütlere göre kullanılacak en iyi kayıtlı araç zincirini bulur:- Araç zincirinin ve hedef platformun uyumlu olduğundan emin olmak için
target_compatible_with
özelliği için değer ekleyebilirsiniz. exec_compatible_with
özelliğini kontrol ederek araç zincirinin ve yürütme platformunun uyumlu olduğundan emin olun.- Birden fazla araç zinciri kaldıysa en yüksek öncelikli olanı (ilk kaydedilen) seçin.
- Araç zincirinin ve hedef platformun uyumlu olduğundan emin olmak için
ToolchainResolutionFunction
, istenen her araç zinciri türü içinSingleToolchainResolutionFunction
'ı çağırır ve ardından kullanılacak en iyi yürütme platformunu belirler.- Öncelikle, istenen her toolchain türü için geçerli bir toolchain'e sahip olmayan tüm yürütme platformlarını kaldırın.
- Birden fazla yürütme platformu ayrılırsa en yüksek öncelikli olanı seçin
bir (ilk kaydettirilen).
- Yürütme platformu, araç zinciri geçişi tarafından zaten ayarlanmışsa aşağıda açıklandığı gibi öncelikli olarak seçilir.
Araç Zincirleri ve Yapılandırmalar'da açıklandığı gibi,
bağımlılığın bir hedeften araç zincirine bağlı olması,
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
bir alt sınıf olarak yayınlandı.
ConfiguredTargetKey
, şu şekilde adlandırıldı:
ToolchainDependencyConfiguredTargetKey
.
Bu alt sınıf, ConfiguredTargetKey
'teki diğer verilere ek olarak yürütme platformunun etiketini de içerir. 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 (geçerli araç zincirleri olmadığı veya kural ya da hedeften kaynaklanan yürütme kısıtlamaları olduğu için) bunun yerine en yüksek önceliğe sahip geçerli yürütme platformu kullanılır.