CONTROL 檔案
警告
CONTROL
檔案已被取代,且只保留舊版 vcpkg 的回溯相容性。 針對任何新撰寫的埠使用 vcpkg.json指令清單檔案 。
使用 ./vcpkg format-manifest path/to/CONTROL
將現有的 CONTROL
檔案 vcpkg.json
轉換成檔案。
檔案 CONTROL
包含埠的相關元數據。 語法是以 Debian control
格式為基礎,但我們只支援這裡記載的字段子集。
功能變數名稱會區分大小寫,並啟動行而不帶前置空格符。 段落會以一或多個空行分隔。
來源段落
檔案中的第一個 CONTROL
段落是Source段落。 它必須具有 Source
、 Version
和 Description
欄位。 完整的欄位集記載於下方。
範例
Source: ace
Version: 6.5.5
Description: The ADAPTIVE Communication Environment
Source: vtk
Version: 8.2.0
Port-Version: 2
Description: Software system for 3D computer graphics, image processing, and visualization
Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, libtheora, atlmfc (windows), eigen3, double-conversion, pugixml, libharu, sqlite3, netcdf-c
辨識的欄位
來源
埠的名稱。
新增埠時,請注意名稱可能與不屬於 vcpkg 的其他項目衝突。 例如 json
,與其他項目衝突太多,因此您應該將範圍新增至名稱,例如 taocpp-json
,使其是唯一的。 確認搜尋引擎和其他套件集合上沒有任何衝突。
要檢查衝突的套件集合:
版本
連結庫版本。
此欄位是英數位元字串,也可能包含 .
、 _
或 -
。 不會嘗試排序版本;所有版本都會被視為位字串,而且只會評估是否相等。
針對標記發行埠,我們遵循下列慣例:
- 如果埠遵循類似 的配置
va.b.c
,我們會移除前置v
。 在這裡情況下,它會變成a.b.c
。 - 如果埠在 類似
curl-7_65_1
的版本中包含自己的名稱,我們會移除前置名稱:7_65_1
針對輪流發行埠,我們使用 您存取認可日期,格式為 YYYY-MM-DD
。 另一種方式是:如果有人有時間機器並移至該日期,他們會將此認可視為最新的主圖形。
例如,假設:
- 最新認可於 2019-04-19
- 目前的版本字串為
2019-02-14-1
- 今天的日期是 2019-06-01。
然後,如果您今天更新來源版本,您應該為它提供版本 2019-06-01
。
埠版本
埠的版本。
此欄位是非負整數。 它可讓一個與基礎連結庫版本分開設定埠檔案的版本;如果您變更埠,而不變更連結庫的基礎版本,則應該將這個欄位遞增一個(從 開始 0
,相當於沒有 Port-Version
字段)。 升級基礎連結庫的版本時,應該將此字段設回 0
(亦即刪除 Port-Version
欄位)。
範例
Version: 1.0.5
Port-Version: 2
Version: 2019-03-21
描述
連結庫的描述。
依照慣例,描述的第一行是連結庫的摘要。 選擇性的詳細描述如下。 詳細的描述可以是多行,全部以空格符開頭。
範例
Description: C++ header-only JSON library
Description: Mosquitto is an open source message broker that implements the MQ Telemetry Transport protocol versions 3.1 and 3.1.1.
MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for "machine
to machine" messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino.
首頁
用戶能夠找到其他檔或原始原始原始程式碼之文件庫首頁的 URL。
範例:
Homepage: https://github.com/Microsoft/vcpkg
Build-Depends
連結庫相依於的 vcpkg 埠逗號分隔清單。
vcpkg 不會區分僅限建置相依性和運行時間相依性。 應該指定成功使用連結庫所需的相依性完整清單。
例如:websocketpp 只是標頭連結庫,因此在安裝時不需要任何相依性。 不過,下游使用者需要 boost 和 openssl,才能使用連結庫。 因此,websocketpp 會列出 boost 和 openssl 作為相依性。
如果埠相依於另一個連結庫的選擇性功能,則可以使用 portname[featurelist]
語法來指定這些連結庫。 如果連接埠不需要相依性的任何功能,則應指定為 portname[core]
。
相依性可以根據目標三元篩選,以支援不同的需求。 這些篩選條件會使用與下方的 [支援] 字段相同的語法,並在 portname 和功能列表之後以括弧括住。
範例
Build-Depends: rapidjson, curl[core,openssl] (!windows), curl[core,winssl] (windows)
Default-Features
默認要安裝的選擇性埠功能逗號分隔清單。
這是選用欄位。
範例
Default-Features: dynamodb, s3, kinesis
支援
當埠預期成功建置三元時,評估為 true 的表達式。
目前,此欄位只會在 CI 測試中使用,以略過埠。 未來,此機制旨在事先警告使用者指定的安裝樹狀結構不會成功。 因此,此欄位應以開放式方式使用;如果埠預期成功 10% 的時間,仍應標示為「支援」。
如需支援的標識碼清單,請參閱指令清單檔中vcpkg.json
的平台表達式。
範例
Supports: !(uwp|arm)
功能段落
您可以在檔案中 CONTROL
指定多個選擇性功能。 它必須有和 Feature
Description
欄位。 它可以選擇性地擁有 Build-Depends
欄位。 它必須與其他段落隔開一或多個空行。
範例
Source: vtk
Version: 8.2.0-2
Description: Software system for 3D computer graphics, image processing, and visualization
Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, libtheora, atlmfc (windows), eigen3, double-conversion, pugixml, libharu, sqlite3, netcdf-c
Feature: openvr
Description: OpenVR functionality for VTK
Build-Depends: sdl2, openvr
Feature: qt
Description: Qt functionality for VTK
Build-Depends: qt5
Feature: mpi
Description: MPI functionality for VTK
Build-Depends: mpi, hdf5[parallel]
Feature: python
Description: Python functionality for VTK
Build-Depends: python3
辨識的欄位
功能
功能名稱。
描述
使用與埠 Description
欄位相同的語法來描述功能。
Build-Depends
建置和使用這項功能所需的相依性清單。
在安裝時,會合併所有所選功能的相依性,以產生組建的完整相依性清單。 此欄位遵循與來源段落中相同的語法 Build-Depends
。