次の方法で共有


概念: 既定の機能

この記事では、既定の機能の概念、それらの影響、および効果的な管理のための戦略について説明します。

既定の機能は、明示的に無効にしない限り、ポートのインストール時に自動的に含まれる一連の 機能 です。 これらの機能により、ライブラリメイン依存関係グラフの複雑さが増しても、機能のベースライン レベルが維持されます。

Note

すべてのポートに既定の機能が含まれているわけではありません。

既定の機能の役割

既定の機能では、モジュール機能を備えたライブラリで重要な機能を使用できるようにすることで、ユーザーフレンドリなエクスペリエンスが提供されます。

たとえば、さまざまなアーカイブ形式を抽出できるライブラリには、オプションの機能として各形式が含まれます。 既定の機能がないと、ライブラリにすぐに使用できない抽出アルゴリズムが含まれていない可能性があるため、初期使用が複雑になります。

vcpkg によってインストールされるパッケージには、明示的に要求されない限り、既定の機能が常に含まれます。 この動作は、マニフェスト ファイルまたは vcpkg インストール呼び出しによってユーザーが直接必要とするパッケージと、依存関係として必要なパッケージに適用されます。

マニフェスト モードでの既定の機能の無効化

依存関係宣言に "default-features": false 属性を追加して、既定の機能のインストールを無効にします。

既定の機能の自動インストールを無効にできるのは、ユーザーが要求した依存関係のみです。

推移的な依存関係の既定の機能を無効にする場合は、プロジェクトのマニフェストに対する直接の依存関係に昇格させる必要があります。

クラシック モードでの既定の機能の無効化

インストールするパッケージの要求された機能の一部として、特別な core 機能を追加します。

Note

推移的な依存関係の既定の機能を無効にする場合は、マニフェスト モードの動作と同様です。コマンド ラインで直接インストール要求に昇格させる必要があります。

例 1: 既定の機能を持つライブラリを含む

{
  "name": "my-application",
  "version": "0.15.2",
  "dependencies": [
    "extract-any"
  ]
}

このシナリオでは、 extract-any 既定の機能と共にインストールされ、即時の機能が保証されます。

例 2: 既定の機能を無効にする (マニフェスト モード)

{
  "name": "my-application",
  "version": "0.15.2",
  "dependencies": [
    {
      "name": "extract-any",
      "default-features": false
    }
  ]
}

ここでは、 extract-any 既定の機能なしでインストールされ、カスタマイズされたセットアップが可能です。

例 3: 既定の機能を無効にする (クラシック モード)

vcpkg install extract-any[core]

ここでは、 extract-any 特別な core 機能を使用して、既定の機能なしでインストールされます。

既定の機能の相互作用

  1. 既定の機能 (既定の動作) を使用したポートのインストール: vcpkg install extract-any 特定の機能要求がないため、既定の機能 (extract-any[format-a]) を使用してインストールextract-anyします。

  2. 既定値を無効にせずに機能を指定すると、vcpkg install extract-any[format-b]指定した () 機能と既定 (extract-any) 機能extract-any[format-a,format-b] (format-bformat-a) の両方がインストールされます。

  3. 既定の機能を明示的に無効にする: vcpkg install extract-any[core] 明示的に除外されるため[core]、既定の機能を使用せずにインストールextract-anyします。

  4. 推移的な依存関係と既定の機能: vcpkg install extract-any[format-b] portB 依存extract-any[format-a]している場合portBはインストールされる可能性extract-any[format-a,format-b] portBがありますが、'既定の機能' を明示的に無効にextract-anyしません。

  5. ポートをさまざまな機能仕様と組み合わせる: vcpkg install extract-any[format-b] portB 明示的に除外しない限り、'既定の機能を含むextract-any) をインストールextract-any[format-a, format-b] portBします。

  6. 既定の機能を包括的に無効にする: vcpkg install extract-any[core] portB extract-any 明示的に要求された機能 (既定値を除く) のみを使用してインストールされるようにします。

既定の機能の管理

プロジェクト内の既定の機能を効果的に管理するには:

  • 明示的: 必要な機能のみを指定します。 必要に応じて既定の機能を無効にするために使用 [core] します。
  • 依存関係の検査: 依存関係の解決を理解し、それに応じて構成を調整するために使用 vcpkg depend-info <port> します。
  • オーバーライドとベースラインを利用する: バージョン管理とベースライン機能を活用して、依存関係の解決をより詳細に制御します。

詳細については、「

既定の機能を管理するための明確な戦略を採用すると、プロジェクトの依存関係管理を効率化し、アプリケーションの機能に必要なものだけを含めることができます。