ツールチェーンの解決の実装の詳細

<ph type="x-smartling-placeholder"></ph> 問題を報告する ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

注: このセクションは Bazel デベロッパーを対象としており、 使用できます。

いくつかの SkyFunction クラスがツールチェーンの解決プロセスを実装します。

  1. RegisteredToolchainsFunctionRegisteredExecutionPlatformsFunction 現在のモデルに基づいて利用可能なツールチェーンと実行プラットフォームを WORKSPACE ファイルも含まれます。

  2. SingleToolchainResolutionFunction は、実行プラットフォームごとに 1 つのツールチェーン タイプを解決します。つまり、 すべての実行プラットフォームで、使用すべき最適な登録済みのツールチェーンを 次の基準で判断します

    1. 以下を確認して、ツールチェーンとターゲット プラットフォームに互換性があることを確認する target_compatible_with 属性。
    2. 次のようにして、ツールチェーンと実行プラットフォームに互換性があることを確認します。 exec_compatible_with 属性を確認します。
    3. 複数のツールチェーンが残っている場合は、最も優先度の高いツールチェーン( 。
  3. ToolchainResolutionFunction の呼び出し リクエストされたツールチェーン タイプごとに SingleToolchainResolutionFunction 次に 使用する最適な実行プラットフォームを 決定します

    1. まず、有効な拡張子がない実行プラットフォームを ツールチェーン タイプの変換が 1 つ必要です。
    2. 複数の実行プラットフォームが残っている場合は、最も優先度の高いものを選択する (最初に登録されたもの)。
      1. 実行プラットフォームがツールチェーンによってすでに設定されている場合 以下で説明するように、最初にこのモードが選択されます。

ツールチェーンと構成で説明したように、 ターゲットからツールチェーンへの依存関係には、特別な構成を使用し、 両方で同じ実行プラットフォームが使用されます。名前には反して、 「ツールチェーンの移行」、これは構成として実装されていません。 代わりに、特別なサブクラスとして、 ConfiguredTargetKey、呼び出された ToolchainDependencyConfiguredTargetKey。 このサブクラスは、ConfiguredTargetKey の他のデータに加えて、 実行プラットフォームのラベルです。ToolchainResolutionFunction が次と一致する場合 使用する実行プラットフォームを考慮します ToolchainDependencyConfiguredTargetKey から取得された ID が有効である場合も、 優先度が最も高い場合は

注: 強制実行プラットフォームが有効でない場合(強制実行プラットフォームが存在しないため) 有効なツールチェーン、またはルールまたはターゲットからの実行制約が原因です。 優先度の最も高い有効な実行プラットフォームが代わりに使用されます。