重疊埠
通常,vcpkg 埠是從登錄取得。 您安裝的大部分埠很可能是來自 位於 https://github.com/Microsoft/vcpkg的官方 vcpkg 登錄。 vcpkg 可讓您透過文件系統安裝可用的埠,我們稱之為這些埠、重迭埠。
重迭埠可以做為現有埠的卸除取代,或做為登錄中無法使用的新埠。 解析套件名稱時,重迭埠會優先使用。
重迭埠會依下列順序進行評估:
- 透過命令列
--overlay-ports
中指定的目錄,如果該目錄沒有CONTROL
或vcpkg.json
檔案,則為具名子目錄。 - 透過 在檔案
overlay-ports
中指定的vcpkg-configuration.json
目錄,如果該目錄沒有CONTROL
或vcpkg.json
檔案,則為具名子目錄。 - 環境變數專案所
VCPKG_OVERLAY_PORTS
指定的目錄,如果該目錄沒有CONTROL
或vcpkg.json
檔案,則為具名子目錄。
解析埠名稱時,會選取包含相符重迭埠的第一個位置。
如果指定重迭埠,首先,vcpkg 會嘗試將該目錄載入為埠。 如果成功,目錄本身就會被視為埠,而重疊的名稱則衍生自 CONTROL
或 vcpkg.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
:這個重迭中有兩個埠,c
和d
。 其名稱衍生自 的y
子目錄,且在其 中vcpkg.json
宣告的名稱必須相符,或如果要求 vcpkg 考慮c
或d
,則會產生錯誤。
您可以透過數種方式新增至重迭埠組態:
- 命令行:將一或多個
--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 相依性使用系統套件管理員相依性,請參閱我們的 部落格文章。