トレーニング
ラーニング パス
FastTrack サービス、データ管理などを使用して、財務と運用アプリの実装を成功させるためのプロジェクト方法論を計画および設計します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
機能は、インストール時にパッケージまたはプロジェクトに選択的に追加できる機能、動作、依存関係のセットを表します。
設計上、機能は次の原則に従う必要があります。
機能を使用して、代替機能セットを定義しないでください。 たとえば、グラフィックス ライブラリでは、排他的なグラフィックス バックエンドの中から選択する機能を使用しないでください。一度にすべてのグラフィックス バックエンドをインストールすることはできません。
機能は、パッケージの依存関係に次の影響を与える可能性があります。
使用可能な機能のセットは、フィールドによって"features"
定義されます。
たとえば、イメージ操作ライブラリでは、他のライブラリの異なるセットに応じて、複数の異なるイメージの種類がサポートされる場合があります。
{
"name": "my-image-lib",
"version": "0.1",
"features": {
"png": { "description": "Support PNG files", "dependencies": ["libpng"]},
"jpeg": { "description": "Support JPEG files", "dependencies": ["libjpeg-turbo"]},
"tiff": { "description": "Support TIFF files", "dependencies": ["libtiff"]},
}
}
既定の機能は、最上位レベルのプロジェクトがビルドを明示的に要求しない場合に自動的にアクティブ化される一連の機能です。 既定の機能は、プロジェクトの依存関係グラフがどのように複雑でカスタマイズ可能かに関係なく、最小限の機能レベルを確保することを目的としています。
注意
既定の機能は、"キュレーション" または "提案" をモデル化するためのものではありません。
たとえば、10 種類以上のアーカイブ形式をサポートするライブラリ "extract-any"
について考えてみます。 これらはすべて省略可能であるため、何も選択されていない場合、ライブラリは機能しません。ファイルを抽出することはできません。
既定の機能により、単に依存関係vcpkg.json
の一覧に追加"extract-any"
するユーザーは、ベースライン レベルの機能 (自動選択や.tar.gz
展開など) を.zip
取得できます。
ユーザーが機能をvcpkg.json
指定せずに追加"extract-any"
すると、既定の機能 (サポートや.tar.gz
形式など.zip
) が自動的に含まれるため、基本的な機能が保証されます。
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
"extract-any"
]
}
ユーザーが既定の機能を明示的に無効にする場合は、依存関係に追加 "default-features": false
することで、これを行うことができます。
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
{
"name": "extract-any",
"default-features": false
}
]
}
または、クラシック モードで vcpkg を使用している場合は、この機能を使用して既定の機能をcore
無効にすることができます。 たとえば、 vcpkg install extract-any[core]
既定の extract-any
機能を使用せずにインストールすると、 [core]
明示的に除外されます。
詳細については、既定の機能に関する記事をチェック。
vcpkg を使用する場合、依存関係の解決は、特に相互依存関係を持つ機能を扱う場合に重要な役割を果たします。 図を示すために、画像操作ライブラリに関連する次のシナリオを考えてみましょう。
{
"name": "my-image-lib",
"version": "0.1",
"features": {
"png": { "description": "Support PNG files", "dependencies": ["libpng"]},
"jpeg": { "description": "Support JPEG files", "dependencies": ["libjpeg-turbo"]},
"tiff": { "description": "Support TIFF files", "dependencies": ["libtiff"]},
}
}
異なるライブラリが共通ライブラリのさまざまな機能に依存するシナリオでは、vcpkg によって、必要なすべての機能と依存関係が考慮されます。 たとえば、機能が必要でlibrary-b
、機能がjpeg
my-image-lib
必要な場合library-a
、依存関係グラフは次png
のようになります。
{
"name": "library-a",
"version": "1",
"dependencies": [{"name": "my-image-lib", "features": ["png"]}]
}
{
"name": "library-b",
"version": "1",
"dependencies": [{"name": "my-image-lib", "features": ["jpeg"]}]
}
{
"name": "project-using-a-and-b",
"version": "1",
"dependencies": [
"library-a",
"library-b"
]
}
これらの依存関係が解決されると、vcpkg は必要なすべての機能と依存関係を組み合わせて、包括的なインストール 計画を形成します。 この例では、プロジェクトは両方library-a
に依存しlibrary-b
、両方とJPEG
サポートを含むインストール計画になりますが、次の内容はmy-image-lib
含PNG
まれませんTIFF
。
libjpeg-turbo[core]
libpng[core]
library-a[core]
library-b[core]
my-image-lib[core,png,jpeg]
このメカニズムにより、必要な機能に合わせてビルド my-image-lib
が最適化され、不要なサポートの PNG
サポートが提供され JPEG
、不要 TIFF
なサポートは除外されます。
1 つのリポジトリに、いくつかの共有コードを含むクライアント アプリケーションやサーバー アプリケーションなど、複数の個別のビルド可能なコンポーネントが含まれている場合、各部分の開発者は、他の部分に必要な高価な依存関係をインストールしないようにしたい場合があります。
{
"name": "my-game",
"dependencies": ["grpc"],
"features": {
"client": { "description": "Client Game Executable", "dependencies": ["sdl2", "bullet3"]},
"server": { "description": "Multiplayer Server Executable", "dependencies": ["proxygen"]},
"tests": { "description": "Build tests", "dependencies": ["gtest"] }
}
}
個々の開発者は、インストールする機能を選択できます。
--x-feature=
VCPKG_MANIFEST_FEATURES
しますproject()
。--x-feature=
VcpkgAdditionalInstallOptions
詳細については、「
vcpkg に関するフィードバック
vcpkg はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。
トレーニング
ラーニング パス
FastTrack サービス、データ管理などを使用して、財務と運用アプリの実装を成功させるためのプロジェクト方法論を計画および設計します。