概念:預設功能
本文說明預設功能的概念、其含意,以及有效管理的策略。
默認功能是安裝埠時自動包含的功能集合,除非明確停用。 這些功能可確保連結庫維持功能的基準層級,即使其相依性圖形的複雜度增加也一樣。
注意
並非所有埠都包含預設功能。
預設功能的角色
默認功能可藉由確保具有模組化功能的連結庫中提供基本功能,以提供方便使用者使用的體驗。
例如,能夠擷取各種封存格式的連結庫可能會有每個格式作為選擇性功能。 如果沒有預設功能,連結庫可能不會包含任何現用的擷取演算法,使初始使用複雜化。
vcpkg 所安裝的套件一律會包含其預設功能,除非另有明確要求。 此行為會直接套用至使用者透過指令清單檔案或 vcpkg 安裝調用所需的套件,以及作為相依性的套件。
停用指令清單模式中的預設功能
將 "default-features": false
屬性新增至相依性宣告,以停用其預設功能的安裝。
只有使用者要求的相依性,才能停用預設功能的自動安裝。
如果您想要停用可轉移相依性的預設功能,您必須將它升階為專案指令清單的直接相依性。
停用傳統模式中的預設功能
將特殊 core
功能新增為您想要安裝之套件要求的一部分。
注意
類似於指令清單模式的運作方式,如果您想要停用可轉移相依性的預設功能;您需要將其升級為命令行中的直接安裝要求。
範例 1:包含具有預設功能的連結庫
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
"extract-any"
]
}
在此案例中, extract-any
會隨其預設功能一起安裝,以確保立即的功能。
範例 2:停用預設功能(指令清單模式)
{
"name": "my-application",
"version": "0.15.2",
"dependencies": [
{
"name": "extract-any",
"default-features": false
}
]
}
在這裡, extract-any
會安裝,而不需要其預設功能,即可進行量身打造的設定。
範例 3:停用預設功能(傳統模式)
vcpkg install extract-any[core]
在這裡, extract-any
會使用特殊 core
功能來安裝,而不會安裝其預設功能。
默認功能互動
安裝具有預設功能的埠(預設行為):
vcpkg install extract-any
由於缺少特定功能要求,所以會使用extract-any
其預設功能安裝 。extract-any[format-a]
指定功能而不停用預設值:會導致使用指定的 () 和預設 (
format-b
) 功能 (format-a
extract-any[format-a,format-b]
) 安裝extract-any
vcpkg install extract-any[format-b]
。明確停用預設功能:
vcpkg install extract-any[core]
在沒有任何預設功能的安裝extract-any
時,會[core]
明確排除它們。可轉移的相依性和預設功能:如果相依於
extract-any[format-a]
,但不會明確停用extract-any
預設功能,可能會導致extract-any[format-a,format-b] portB
安裝。portB
vcpkg install extract-any[format-b] portB
結合埠與各種功能規格:
vcpkg install extract-any[format-b] portB
除非明確排除,否則會extract-any[format-a, format-b] portB
安裝 ,包括extract-any
的預設功能。全面停用預設功能:
vcpkg install extract-any[core] portB
確保extract-any
只安裝具有明確要求的功能,但不包括預設值。
管理預設功能
若要有效地管理項目內的預設功能:
- 明確:只指定您需要的功能。 必要時,請使用
[core]
來停用預設功能。 - 檢查相依性:用來
vcpkg depend-info <port>
瞭解相依性解析,並據以調整您的設定。 - 利用覆寫和基準:利用 版本控制和基準功能 ,以更充分掌控相依性解析。
如需詳細資訊,請參閱下列:
採用明確的管理預設功能策略有助於簡化專案的相依性管理,確保您只包含應用程式功能所需的專案。