共用方式為


概念:預設功能

本文說明預設功能的概念、其含意,以及有效管理的策略。

默認功能是安裝埠時自動包含的功能集合,除非明確停用。 這些功能可確保連結庫維持功能的基準層級,即使其相依性圖形的複雜度增加也一樣。

注意

並非所有埠都包含預設功能。

預設功能的角色

默認功能可藉由確保具有模組化功能的連結庫中提供基本功能,以提供方便使用者使用的體驗。

例如,能夠擷取各種封存格式的連結庫可能會有每個格式作為選擇性功能。 如果沒有預設功能,連結庫可能不會包含任何現用的擷取演算法,使初始使用複雜化。

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 功能來安裝,而不會安裝其預設功能。

默認功能互動

  1. 安裝具有預設功能的埠(預設行為)vcpkg install extract-any由於缺少特定功能要求,所以會使用extract-any其預設功能安裝 。extract-any[format-a]

  2. 指定功能而不停用預設值:會導致使用指定的 () 和預設 (format-b) 功能 (format-aextract-any[format-a,format-b]) 安裝 extract-anyvcpkg install extract-any[format-b]

  3. 明確停用預設功能:vcpkg install extract-any[core]在沒有任何預設功能的安裝extract-any時,會[core]明確排除它們。

  4. 可轉移的相依性和預設功能:如果相依於 extract-any[format-a],但不會明確停用extract-any預設功能,可能會導致extract-any[format-a,format-b] portB安裝。portBvcpkg install extract-any[format-b] portB

  5. 結合埠與各種功能規格vcpkg install extract-any[format-b] portB 除非明確排除,否則會 extract-any[format-a, format-b] portB安裝 ,包括 extract-any的預設功能。

  6. 全面停用預設功能vcpkg install extract-any[core] portB 確保 extract-any 只安裝具有明確要求的功能,但不包括預設值。

管理預設功能

若要有效地管理項目內的預設功能:

  • 明確:只指定您需要的功能。 必要時,請使用 [core] 來停用預設功能。
  • 檢查相依性:用來vcpkg depend-info <port>瞭解相依性解析,並據以調整您的設定。
  • 利用覆寫和基準:利用 版本控制和基準功能 ,以更充分掌控相依性解析。

如需詳細資訊,請參閱下列:

採用明確的管理預設功能策略有助於簡化專案的相依性管理,確保您只包含應用程式功能所需的專案。