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

. Sorun bildirin Kaynağı göster Gece · 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 bilgi sahibi olmanızı sağlar.

Çeşitli SkyFunction sınıfları, araç zinciri çözümleme işlemini uygular:

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

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

    1. Araç zincirinin ve hedef platformun uyumlu olduğundan emin olmak için target_compatible_with özelliği için değer ekleyebilirsiniz.
    2. Araç zincirinin ve yürütme platformunun uyumlu olduğundan emin olun. exec_compatible_with özelliğini kontrol etmek.
    3. Birden fazla araç zinciri kalırsa en yüksek öncelikli olanı seçin ( birini seçin.
  3. ToolchainResolutionFunction arama İstenen her araç zinciri türü için SingleToolchainResolutionFunction ve Ardından kullanılacak en iyi yürütme platformunu belirler.

    1. Öncelikle, geçerli bir araç zincirini kullanmaya devam edin.
    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 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.