概念: 既定の機能
この記事では、既定の機能の概念、それらの影響、および効果的な管理のための戦略について説明します。
既定の機能は、明示的に無効にしない限り、ポートのインストール時に自動的に含まれる一連の 機能 です。 これらの機能により、ライブラリメイン依存関係グラフの複雑さが増しても、機能のベースライン レベルが維持されます。
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
機能を使用して、既定の機能なしでインストールされます。
既定の機能の相互作用
既定の機能 (既定の動作) を使用したポートのインストール:
vcpkg install extract-any
特定の機能要求がないため、既定の機能 (extract-any[format-a]
) を使用してインストールextract-any
します。既定値を無効にせずに機能を指定すると、
vcpkg install extract-any[format-b]
指定した () 機能と既定 (extract-any
) 機能extract-any[format-a,format-b]
(format-b
format-a
) の両方がインストールされます。既定の機能を明示的に無効にする:
vcpkg install extract-any[core]
明示的に除外されるため[core]
、既定の機能を使用せずにインストールextract-any
します。推移的な依存関係と既定の機能:
vcpkg install extract-any[format-b] portB
依存extract-any[format-a]
している場合portB
はインストールされる可能性extract-any[format-a,format-b] portB
がありますが、'既定の機能' を明示的に無効にextract-any
しません。ポートをさまざまな機能仕様と組み合わせる:
vcpkg install extract-any[format-b] portB
明示的に除外しない限り、'既定の機能を含むextract-any
) をインストールextract-any[format-a, format-b] portB
します。既定の機能を包括的に無効にする:
vcpkg install extract-any[core] portB
extract-any
明示的に要求された機能 (既定値を除く) のみを使用してインストールされるようにします。
既定の機能の管理
プロジェクト内の既定の機能を効果的に管理するには:
- 明示的: 必要な機能のみを指定します。 必要に応じて既定の機能を無効にするために使用
[core]
します。 - 依存関係の検査: 依存関係の解決を理解し、それに応じて構成を調整するために使用
vcpkg depend-info <port>
します。 - オーバーライドとベースラインを利用する: バージョン管理とベースライン機能を活用して、依存関係の解決をより詳細に制御します。
詳細については、「
既定の機能を管理するための明確な戦略を採用すると、プロジェクトの依存関係管理を効率化し、アプリケーションの機能に必要なものだけを含めることができます。
vcpkg