共用方式為


安裝目錄配置慣例

本文說明 vcpkg 用於安裝目錄的配置慣例。 安裝目錄會保存每個套件所安裝的檔案。 埠作者應該確保其套件遵循本文所述的慣例。

傳統模式中,安裝目錄位於 $VCPKG_ROOT/installed (其中 $VCPKG_ROOT 是您的 vcpkg 安裝路徑)。 在 指令清單模式中,每個指令清單檔都有對應的 vcpkg_installed 目錄。 您可以使用 選項來變更 --x-install-root 安裝目錄的位置。 不論作業模式為何,安裝目錄的配置都會維持不變。

如果您沒看到安裝目錄嘗試先安裝一些套件,則安裝目錄會在第一次安裝套件時建立。

安裝目錄的根層級包含:

  • vcpkg 追蹤已安裝套件和檔案的目錄
  • 每個 三重項目的目錄。 每個三重目錄都包含每個套件所安裝的檔案。

Triplet 目錄

每個套件安裝的輸出都包含在三重特定目錄中。 例如,針對 x64-windows triplet 安裝的套件位於 installed/x64-windows 目錄中。

每個三重目錄內的子目錄設定都相同:

注意

某些套件可能會產生不符合此處所述的慣例的檔案。 埠作者應該根據每個檔案所提供的目的來判斷所產生檔案的最終位置。

子目錄 檔案類型
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> 可執行工具

bindebug/bin 目錄

在 Windows 上,這些目錄分別包含發行和偵錯組態的 DLL 和 PDB 檔案。 埠所產生的任何可執行檔都應該移至 tools/<port> 目錄。

include

包含標頭檔案 (.h、 、 .hpp.hxx 此目錄下的版面配置應該反映套件頭文件的預期使用方式。 例如, contoso 想要使用 #include <contoso/contoso.h> 的連結庫應該提供頭檔 include/contoso/contoso.h

vcpkg 禁止在目錄的 include 根目錄中安裝一些保留頭檔名稱,例如: err.huser.htime.h和其他。 提供禁止頭檔名稱的連結庫應該將其頭檔放在目錄內 include/<port> 。 如果連結庫想要取代系統標頭檔,它應該在其 中portfile.cmake設定原則VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS

libdebug/lib 目錄

包含靜態庫、匯入連結庫(在 Windows 上),以及共用連結庫(在非 Windows 上)。

包含必須手動連結的連結庫。

當自動連結自動放置於 lib/manual-link 資料夾而非 lib 目錄時,可能會導致問題的檔案。 例如,如果連結庫是要定義 main() 程式的函式。

lib/pkgconfigdebug/lib/pkgconfigshare/pkgconfig 目錄

包含 pkgconfig 整合檔案 (.pc)。 連結庫不應該同時提供與組態相關的和與組態無關的檔案。 例如:請勿安裝 lib/pkgconfig/contoso.pcshare/pkgconfig/contoso.pc

plugins/<group>debug/plugins/<group>

包含共用連結庫,這些連結庫旨在藉由取用應用程式在運行時間期間載入。

share/<port>

包含每個埠所安裝之其他檔案。 例如,SPDX 檔案、腳本等。

vcpkg 預期埠會提供 copyright 檔案,其中包含已安裝套件的授權資訊。 如需詳細資訊, 請參閱維護者指南

share/<port>/usage

文本檔,其中包含整合專案內連結庫的指示。 如需詳細資訊,請參閱提供套件使用方式檔的指南。

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.cmakeshare/mypackage/MyPackage-config.cmake

如果套件提供 CMake 整合檔案,則 vcpkg_cmake_config_fixup() 應該叫用 helper 函式來修正任何不可重新放置的路徑,以及合併組建組態。

tools/<port>

重要

vcpkg 首先是C++連結庫相依性管理員。 決定在安裝輸出中包含工具時,應該刻意撰寫埠作者。 例如:若不需要偵錯工具,請考慮只安裝發行可執行檔。

當可執行檔用於運行時間時,應該同時提供發行和偵錯可執行檔。

包含埠所產生的可執行工具。 強烈建議您,但並非必要,每個已安裝的可執行檔都會進入符合產生該可執行檔之埠名稱的子目錄。 例如, contoso 埠可能會將 安裝 ContosoGenerator.exetools/contoso/ContosoGenerator.exe

某些埠會要求其可執行檔案進入 bin 子目錄,在此情況下,建議的模式為 tools/<port>/bin