この記事では、インストール ディレクトリに vcpkg で使用されるレイアウト規則について説明します。 インストール ディレクトリには、各パッケージによってインストールされたファイルが保持されます。 ポート作成者は、パッケージがこの記事で説明されている規則に従っていることを確認する必要があります。
クラス モードでは、インストール ディレクトリは $VCPKG_ROOT/installed にあります ($VCPKG_ROOTは vcpkg のインストール パスです)。 manifest モードでは、各マニフェスト ファイルには対応する vcpkg_installed ディレクトリがあります。 インストール ディレクトリの場所は、 --x-install-root オプションを使用して変更できます。
操作モードに関係なく、インストール ディレクトリのレイアウトは変わりません。
インストール ディレクトリが表示されない場合は、最初にパッケージをインストールするときにインストール ディレクトリが作成。
インストール ディレクトリのルート レベルには、次のものが含まれます。
- インストールされているパッケージとファイルを追跡する
vcpkgディレクトリ - 各 tripletのディレクトリ。 各トリプレット ディレクトリには、各パッケージによってインストールされたファイルが含まれています。
Triplet ディレクトリ
各パッケージのインストールの出力は、トリプレット固有のディレクトリに含まれています。
たとえば、 x64-windows トリプレット用にインストールされたパッケージは、 installed/x64-windows ディレクトリにあります。
各トリプレット ディレクトリ内のサブディレクトリのレイアウトは同じです。
Note
一部のパッケージでは、ここで説明する規則に一致しないファイルが生成される場合があります。 ポート作成者は、各ファイルが提供する目的に基づいて、生成されたファイルの最終的な場所を決定する必要があります。
| Subdirectory | ファイルのタイプ |
|---|---|
bin |
.dllファイルと.pdb ファイルのリリース |
debug/bin |
.dllファイルと.pdb ファイルをデバッグする |
debug/lib |
.lib、.so、.dylib、.a ファイルをデバッグする |
debug/lib/manual-link |
手動でリンク可能なデバッグ .lib、 .so、 .dylib、 .a ファイル |
debug/plugins/<group> |
ランタイム読み込みデバッグ .dll ファイル |
debug/lib/pkgconfig |
pkgconfig ファイルのデバッグ (.pc) |
include |
ヘッダー ファイル (.h、 .hpp、 .hxx) |
lib |
.lib、.so、.dylib、.a ファイルのリリース |
lib/manual-link |
手動でリンク可能なリリース .lib、 .so、 .dylib、および .a ファイル |
lib/pkgconfig |
Pkgconfig ファイル (.pc) |
plugins/<group> |
ランタイム読み込みリリース .dll ファイル |
share/<port> |
その他の構成に依存しないファイル |
share/<port>/copyright |
パッケージのライセンス テキスト |
share/<port>/usage |
Buildsystem 統合命令ファイル |
share/<port>/vcpkg-port-config.cmake |
ポート定義の CMake 関数と変数 |
share/<lowercase-package>/<package>Config.cmake |
CMake 統合ファイル find_package(package) |
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake |
CMake find_package(<cmakepackagename>) オーバーライド |
share/pkgconfig |
構成に依存しない pkgconfig ファイル (.pc) |
tools/<port> |
実行可能ツール |
bin ディレクトリと debug/bin ディレクトリ
Windows では、これらのディレクトリには、リリース構成とデバッグ構成用の DLL ファイルと PDB ファイルがそれぞれ含まれています。 ポートによって生成されるすべての実行可能ファイルは、 tools/<port> ディレクトリに移動する必要があります。
include
ヘッダー ファイル (.h、 .hpp、 .hxx) が含まれています。 このディレクトリの下のレイアウトには、パッケージのヘッダー ファイルの使用目的が反映されている必要があります。 たとえば、#include <contoso/contoso.h>を使用するcontoso ライブラリは、ヘッダー ファイルinclude/contoso/contoso.hを提供する必要があります。
vcpkg では、 include ディレクトリのルートにいくつかの予約済みヘッダー ファイル名をインストールすることを禁止します (例: err.h、 user.h、 time.hなど)。
禁止されているヘッダー ファイル名を提供するライブラリでは、そのヘッダー ファイルを include/<port> ディレクトリ内に配置する必要があります。 ライブラリがシステム ヘッダー ファイルを置き換える場合は、portfile.cmakeでVCPKG_POLICY_ALLOW_RESTRICTED_HEADERS ポリシーを設定する必要があります。
lib ディレクトリと debug/lib ディレクトリ
静的ライブラリ、インポート ライブラリ (Windows 上)、および共有ライブラリ (Windows 以外の場合) が含まれます。
lib/manual-link ディレクトリと debug/lib/manual-link ディレクトリ
手動でリンクする必要があるライブラリが含まれています。
自動的にリンクされたときに問題が発生する可能性があるファイルは、lib ディレクトリではなく、lib/manual-link フォルダーに配置する必要があります。 たとえば、ライブラリがプログラムの main() 関数を定義することを目的としている場合です。
lib/pkgconfig、 debug/lib/pkgconfig 、および share/pkgconfig ディレクトリ
pkgconfig 統合ファイル (.pc) が含まれています。 ライブラリでは、構成に依存するファイルと構成に依存しないファイルを同時に提供しないでください。
たとえば、 lib/pkgconfig/contoso.pc と share/pkgconfig/contoso.pcをインストールしないでください。
plugins/<group> および debug/plugins/<group>
アプリケーションを使用して実行時に読み込まれる共有ライブラリが含まれています。
share/<port>
各ポートによってインストールされるその他のファイルが含まれています。 たとえば、SPDX ファイル、スクリプトなどです。
share/<port>/copyright
vcpkg は、ポートが、インストールされているパッケージのライセンス情報を含む copyright ファイルを提供することを想定しています。 詳細については、 maintainer ガイド を参照してください。
share/<port>/usage
プロジェクト内にライブラリを統合する手順を含むテキスト ファイル。 詳細については、 guide を参照してパッケージの使用ドキュメントを提供します 。
share/<lowercase-package>/<package>Config.cmake, share/<package>/<package>-config.cmake
CMake 統合ファイルは、 share フォルダーに配置し、CMake の find_package(package) を CONFIG モードにします。
たとえば、ポートが find_package(MyPackage REQUIRED)を提供することを想定している場合は、 share/mypackage/MyPackageConfig.cmake または share/mypackage/MyPackage-config.cmakeを提供する必要があります。
パッケージが CMake 統合ファイルを提供する場合、vcpkg_cmake_config_fixup() ヘルパー関数を呼び出して、再配置できないパスを修正し、ビルド構成をマージする必要があります。
tools/<port>
重要
vcpkg は、まず C++ ライブラリの依存関係マネージャーです。 ポート作成者は、インストール出力にツールを含めることを決定するときは、慎重に行う必要があります。 たとえば、デバッグ ツールが必要ない場合は、リリース実行可能ファイルのみをインストールすることを検討してください。
実行可能ファイルが実行時に使用されることを意図している場合は、リリース実行可能ファイルとデバッグ実行可能ファイルの両方を指定する必要があります。
ポートによって生成された実行可能ツールが含まれています。 インストールされている各実行可能ファイルは、それを生成したポートの名前と一致するサブディレクトリに配置することを強くお勧めしますが、必須ではありません。 たとえば、contoso ポートでは、tools/contoso/ContosoGenerator.exeするContosoGenerator.exeをインストールできます。
一部のポートでは、実行可能ファイルが bin サブディレクトリに入る必要があります。その場合、推奨されるパターンは tools/<port>/bin。
vcpkg