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

Not: Bu bölüm, Bazel geliştiricileri için hazırlanmıştır ve kural yazarları tarafından gerekli değildir.

Bazı SkyFunction sınıfları araç zinciri çözümleme sürecini uygular:

  1. RegisteredToolchainsFunction ve RegisteredExecutionPlatformsFunction mevcut yapılandırma ve WORKSPACE dosyasına göre kullanılabilir araç zincirleri ve yürütme platformlarını bulur.

  2. SingleToolchainResolutionFunction, her yürütme platformu için tek bir araç zinciri türünü çözümler. Yani her yürütme platformu için aşağıdaki ölçütlere göre kullanılabilecek en iyi kayıtlı araç zincirini bulur:

    1. target_compatible_with özelliğini kontrol ederek araç zincirinin ve hedef platformun uyumlu olduğundan emin olun.
    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ı seçin (önce kayıtlı olan zincir).
  3. ToolchainResolutionFunction, istenen her araç zinciri türü için SingleToolchainResolutionFunction çağrısı yapar ve ardından kullanılacak en iyi yürütme platformunu belirler.

    1. Öncelikle, istenen her araç zinciri türü için geçerli bir araç zinciri olmayan tüm yürütme platformlarını kaldırın.
    2. Birden fazla yürütme platformu kaldıysa en yüksek öncelikli olanı (önce kaydedilen) seçin.
      1. Yürütme platformu zaten araç zinciri geçişi tarafından ayarlandıysa aşağıda açıklandığı gibi seçilir.

Araç Zincirleri ve Yapılandırmalar bölümünde açıklandığı gibi bir hedeften araç zincirine bağımlılık, yürütme platformunu her ikisi için de aynı olmaya zorlayan özel bir yapılandırma kullanır. "Araç zinciri geçişi" adına rağmen, bu bir yapılandırma geçişi olarak değil, bununConfiguredTargetKey ,ToolchainDependencyConfiguredTargetKey , Bu alt sınıf, ConfiguredTargetKey içindeki diğer verilere ek olarak yürütme platformunun etiketini de içerir. ToolchainResolutionFunction hangi yürütme platformunun kullanılacağını düşünürken, ToolchainDependencyConfiguredTargetKey adresindeki zorunlu yürütme platformu geçerliyse en yüksek öncelikli olmasa bile kullanılır.

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) geçerli olan en yüksek öncelikli yürütme işlemi geçerlidir platformu tercih edilir.