Araç Zinciri Çözüm Uygulama Ayrıntıları

Sorun bildirin Kaynağı göster Gece · 7,4 , 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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:

  1. RegisteredToolchainsFunction ve RegisteredExecutionPlatformsFunction mevcut araç zincirlerini ve yürütme platformlarını bulmak için yapılandırma ve WORKSPACE dosyası.

  2. 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:

    1. Araç zincirinin ve hedef platformun uyumlu olduğundan emin olmak için target_compatible_with özelliği için değer ekleyebilirsiniz.
    2. exec_compatible_with özelliğini kontrol ederek araç zincirinin ve yürütme platformunun uyumlu olduğundan emin olun.
    3. Birden fazla araç zinciri kaldıysa en yüksek öncelikli olanı (ilk kaydedilen) seçin.
  3. ToolchainResolutionFunction, istenen her araç zinciri türü için SingleToolchainResolutionFunction'ı çağırır ve ardından kullanılacak en iyi yürütme platformunu belirler.

    1. Ö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.
    2. Birden fazla yürütme platformu ayrılırsa en yüksek öncelikli olanı seçin bir (ilk kaydettirilen).
      1. 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.