CONTROL 文件

警告

CONTROL 文件已弃用,仅保留与早期版本 vcpkg 的后向兼容性。 将 vcpkg.json 清单文件用于任何新创作的端口。

使用 ./vcpkg format-manifest path/to/CONTROL 将现有的 CONTROL 文件转换为 vcpkg.json 文件。

CONTROL 文件包含有关端口的元数据。 语法基于 Debian control 格式,尽管我们仅支持此处记录的字段子集。

字段名区分大小写,且行首不带前导空格。 段落由一个或多个空行分隔。

源段落

CONTROL 文件中的第一个段落是源段落。 它必须具有 SourceVersionDescription 字段。 下面记录了整组字段。

示例

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

已识别的字段

Source

端口的名称。

添加新端口时请注意,名称可能与不属于 vcpkg 的其他项目冲突。 例如,json 与太多其他项目冲突,因此应将范围添加到该名称(例如 taocpp-json)以使其唯一。 验证搜索引擎以及其他包集合不存在冲突。

要检查冲突的包集合:

版本

库版本。

此字段是一个字母数字字符串,也可能包含 ._-。 未尝试对版本进行排序;所有版本都被视为位字符串,并且仅评估是否相等。

对于标记发布端口,我们遵循以下约定:

  1. 如果端口遵循类似 va.b.c 的方案,我们将移除前导 v。 在本例中,该项将变为 a.b.c
  2. 如果端口在类似 curl-7_65_1 的版本中包含其自己的名称,我们将移除前导名称:7_65_1

对于滚动发布端口,我们使用你访问提交的日期,格式为 YYYY-MM-DD。 换句话说,如果有人有一台时间机器并前往该日期,其会将此提交视为最新的主版本。

例如,给定:

  1. 最新提交日期为 2019-04-19
  2. 当前版本字符串为 2019-02-14-1
  3. 今天的日期为 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

构建依赖项

库依赖的 vcpkg 端口的逗号分隔列表。

vcpkg 不区分仅构建依赖项和运行时依赖项。 应指定成功使用库所需依赖项的完整列表。

例如:websocketpp 是仅包含标头的库,因此在安装时不需要任何依赖项。 但是,下游用户需要 boost 和 openssl 才能使用该库。 因此,websocketpp 将 boost 和 openssl 列为依赖项。

如果端口依赖于其他库的可选功能,则可以使用 portname[featurelist] 语法指定这些库。 如果端口不需要依赖项中的任何功能,则应将此项指定为 portname[core]

可以根据目标三元组筛选依赖项,以支持不同的要求。 这些筛选器使用与下面的“支持”字段相同的语法,并用括号括在端口名称和功能列表后面。

示例
Build-Depends: rapidjson, curl[core,openssl] (!windows), curl[core,winssl] (windows)

默认功能

默认情况下要安装的可选端口功能的逗号分隔列表。

此字段可选。

示例
Default-Features: dynamodb, s3, kinesis

支持

端口预期为三元组成功构建时,计算结果为 true 的表达式。

目前,此字段仅用于在 CI 测试中跳过端口。 将来,此机制旨在提前警告用户给定的安装树不会成功。 因此,应乐观地使用此字段;如果端口预计有 10% 的成功率,则仍应将其标记为“受支持”。

有关支持的标识符列表,请参阅 vcpkg.json 清单文档中的平台表达式

示例
Supports: !(uwp|arm)

功能段落

可以在 CONTROL 文件中指定多项可选功能。 必须有 FeatureDescription 字段。 (可选)可以有 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 相同的语法。