閱讀英文

共用方式為


重疊埠

通常,vcpkg 埠是從登錄取得。 您安裝的大部分埠很可能是來自 位於 https://github.com/Microsoft/vcpkg的官方 vcpkg 登錄。 vcpkg 可讓您透過文件系統安裝可用的埠,我們稱之為這些埠、重迭埠。

重迭埠可以做為現有埠的卸除取代,或做為登錄中無法使用的新埠。 解析套件名稱,重迭埠會優先使用。

重迭埠會依下列順序進行評估:

  • 透過命令列 --overlay-ports中指定的目錄,如果該目錄沒有 CONTROLvcpkg.json 檔案,則為具名子目錄。
  • 透過 在檔案overlay-ports中指定的vcpkg-configuration.json目錄,如果該目錄沒有 CONTROLvcpkg.json 檔案,則為具名子目錄。
  • 環境變數專案所 VCPKG_OVERLAY_PORTS 指定的目錄,如果該目錄沒有 CONTROLvcpkg.json 檔案,則為具名子目錄。

解析埠名稱時,會選取包含相符重迭埠的第一個位置。

使用重迭埠

如果指定重迭埠,首先,vcpkg 會嘗試將該目錄載入為埠。 如果成功,目錄本身就會被視為埠,而重疊的名稱則衍生自 CONTROLvcpkg.json 檔案。 否則,會考慮具有重迭埠名稱的子目錄。

有效的連接埠包含 portfile.cmake、 或 vcpkg.json CONTROL

例如,請考慮下列目錄結構:

  • x/vcpkg.json,欄位 "name" 會設定為 "a"
  • x/portfile.cmake,適用於的相關聯組建指示 a
  • x/b/vcpkg.json,欄位 "name" 會設定為 "b"
  • x/b/portfile.cmake,適用於的相關聯組建指示 b
  • y/c/vcpkg.json,欄位 "name" 會設定為 "c"
  • y/c/portfile.cmake,適用於的相關聯組建指示 c
  • y/d/vcpkg.json,欄位 "name" 會設定為 "d"
  • y/d/portfile.cmake,適用於的相關聯組建指示 d

根據下列設定,vcpkg 會考慮下列埠:

  • --overlay-ports=x:這個重疊中有一個埠, a。 名稱衍生自 vcpkg.json。 子目錄 b 不會考慮。
  • --overlay-ports=x/b:這個重疊中有一個埠, b。 名稱衍生自 vcpkg.json
  • --overlay-ports=y:這個重迭中有兩個埠, cd。 其名稱衍生自 的 y子目錄,且在其 中 vcpkg.json 宣告的名稱必須相符,或如果要求 vcpkg 考慮 cd,則會產生錯誤。

您可以透過數種方式新增至重迭埠組態:

  • 命令行:將一或多個 --overlay-ports=<directory> 選項新增至命令行。
  • 指令清單:在 中vcpkg-configuration.json填入"overlay-ports"陣列。
  • 環境變數:設定 VCPKG_OVERLAY_PORTS 為路徑字元分隔清單。

範例:重迭埠範例

指定此目錄結構:

具有多個重疊埠目錄的範例

名為 team-ports 的重疊目錄包含 sqlite3、rapidjson 和 curl 埠。 名為 my-ports 的重迭目錄包含 sqlite3 和 rapidjson 埠。 vcpkg 目錄包含預設登錄。

請執行:

vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports

安裝方式:

  • my-ports 中的 sqlite3

請執行:

vcpkg install sqlite3 rapidjson curl
    --overlay-ports=my-ports/rapidjson
    --overlay-ports=vcpkg/ports/curl
    --overlay-ports=team-ports

安裝方式:

  • team-ports 中的 sqlite3
  • my-ports 中的 rapidjson
  • vcpkg/ports 中的 curl

範例:使用重疊埠來使用系統套件管理員相依性

若要對 vcpkg 相依性使用系統套件管理員相依性,請參閱我們的 部落格文章