安裝目錄配置慣例
本文說明 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> |
可執行工具 |
bin
和 debug/bin
目錄
在 Windows 上,這些目錄分別包含發行和偵錯組態的 DLL 和 PDB 檔案。 埠所產生的任何可執行檔都應該移至 tools/<port>
目錄。
include
包含標頭檔案 (.h
、 、 .hpp
.hxx
此目錄下的版面配置應該反映套件頭文件的預期使用方式。 例如, contoso
想要使用 #include <contoso/contoso.h>
的連結庫應該提供頭檔 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/manual-link
資料夾而非 lib
目錄時,可能會導致問題的檔案。 例如,如果連結庫是要定義 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
檔案,其中包含已安裝套件的授權資訊。 如需詳細資訊, 請參閱維護者指南 。
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.cmake
或 share/mypackage/MyPackage-config.cmake
。
如果套件提供 CMake 整合檔案,則 vcpkg_cmake_config_fixup()
應該叫用 helper 函式來修正任何不可重新放置的路徑,以及合併組建組態。
tools/<port>
重要
vcpkg 首先是C++連結庫相依性管理員。 決定在安裝輸出中包含工具時,應該刻意撰寫埠作者。 例如:若不需要偵錯工具,請考慮只安裝發行可執行檔。
當可執行檔用於運行時間時,應該同時提供發行和偵錯可執行檔。
包含埠所產生的可執行工具。 強烈建議您,但並非必要,每個已安裝的可執行檔都會進入符合產生該可執行檔之埠名稱的子目錄。 例如, contoso
埠可能會將 安裝 ContosoGenerator.exe
至 tools/contoso/ContosoGenerator.exe
。
某些埠會要求其可執行檔案進入 bin
子目錄,在此情況下,建議的模式為 tools/<port>/bin
。