vcpkg 2022 年 5 月发布:使用 JSON、COS 和 SPDX 支持等的工件

67 人浏览 | 时间: 2022-06-12 19:23:38 | 作者: news

vcpkg 包管理器的 2022 年 5 月版本可用。本博文总结了 2022 年 3 月 31至2022年 5 月 10日期间Microsoft/vcpkg 和 Microsoft /vcpkg-tool GitHub 存储库的更改。

这一时期的一些统计数据:

  • 开源注册表中添加了10 个新端口。如果您不熟悉“端口”一词,它们是从源代码构建的包,通常是 C/C++ 库。
  • 对现有端口进行了422 次更新。与往常一样,我们通过构建依赖于或被正在为我们的九个主要三元组更新的库的所有其他端口来验证对端口的每个更改。
  • vcpkg 公共注册表中现在总共有1,936 个库可用。
  • 5月发布的主要 vcpkg 存储库包括63 人的238次提交。
  • 主要的 vcpkg 存储库在 GitHub 上有4.5k 分叉15.7k 星。

 

显着变化

vcpkg 工件更新

这是我们自去年 12 月推出 vcpkg 工件以来的第一次重大更新。更改和添加都在用于填充可用工件目录的工件元数据上。因此,本节主要对那些准备自己的工件目录的人感兴趣。

该体验仍处于预览阶段,并专注于嵌入式开发人员,但很快将扩展到针对 Linux、macOS 和 Windows 的 C++ 场景。

元数据格式更改

根据我们在注册表中扩展可用工件的经验,我们遇到了在注册表元数据中描述更多内容的需要,并意识到可以更好地命名一些现有功能。

您将观察到以下所有示例都是 json 格式的。首次发布时,vcpkg 工件目录可以创建为 yaml 或 json,我们的示例在 yaml 中。展望未来,我们将规范化为仅使用 json。

当前的“设置”已重命名为“导出”,因为它在功能上就是这样做的。同样,“变量”块已重命名为“环境”,因为它正在设置环境变量。

也有一些添加,全部到导出块:

  • 内容:分类文件/内容、文档等。
  • 别名:供消费者或 Visual Studio / Visual Studio Code 集成使用的命名命令

我们还发现需要能够支持基于激活的需求块内的价值扩张。

以下部分中的示例是片段,请参阅默认的vcpkg 工件注册表以获取完整条目。

导出设置

我们有一个“设置”块,它是“需求”块的一部分。这个块现在被命名为“exports”,因为它更好地描述了这个块在将配置导出到环境中时所做的事情。

“需求” { “出口” { “工具” { “cmake” “bin/cmake” “cmake_gui” “bin/cmake-gui” “ctest” “bin/ctest” },“路径" : { "路径" : "bin" } } } 
    
环境变量

有一个变量块用于存储从工件导出的环境变量。“变量”并不像它可能的那样清晰,因此名称已更改为“环境”以更好地传达本节的功能。环境块是导出块的一部分。

“出口” { “环境” { “CLFAGS” “-Wall -Wextra -Werror” } } 

公关:微软/vcpkg-tool#473

 

添加了对二进制缓存的 Cloud Object Storage 支持

Cloud Object Storage (COS) 是腾讯云的分布式存储服务,可通过 HTTP/HTTPS 访问。最近的社区 PR 允许 vcpkg 用户使用 COS 进行二进制缓存。二进制缓存将库二进制文件的副本保存在共享位置,vcpkg 可以访问该位置以供将来快速安装,可能在本地和 CI 中跨多个开发环境。

PR:Microsoft/vcpkg#23538,Microsoft/vcpkg-tool#476(谢谢@day253!)

 

添加了软件包数据交换 (SPDX) v2.2.1 支持

软件包数据交换 (SPDX) 建立了软件材料清单 (SBOM) 的标准。它允许表达与软件相关的组件、许可证、版权、安全参考和其他元数据(来源:维基百科)。在此版本中,实验性vcpkg 添加了对最新 SPDX 标准的支持,这使得可以轻松跟踪 vcpkg 在系统上安装的所有依赖项。这对于有安全合规需求的组织非常重要,包括向美国政府销售软件的美国组织。虽然 vcpkg 需要支持 SPDX 以满足我们自己的内部合规性需求,但 vcpkg 用户也可以利用这一点来发布他们自己的软件。我们仍在努力开发这种体验,但原型在这个工具版本中。

公关:微软/vcpkg-tool#296

 

如果不满足版本约束,则警告经典模式构建失败

为 vcpkg 经典模式中的版本约束添加了跟踪。经典模式是通过 vcpkg install <PORT> 在命令行中指定要安装的端口,而不是通过清单安装。在构建失败的情况下,版本约束会显示给用户。虽然按照设计,经典模式不会强制用户重新构建过时的依赖项,但了解版本约束对调试有很大帮助。此显示仅针对安装命令出现。

公关:微软/vcpkg-tool#494

 

改进了端口操作的控制台输出

在 vcpkg 安装、修改或删除端口时清理控制台输出。新行为还发布了额外的测试结果以改进诊断。我们收到了很多用户反馈,认为 vcpkg 比人们认为的更冗长 - 这只是朝着更简洁的 vcpkg 迈出的一步!

公关:微软/vcpkg-tool#437

 

在打印之前从 curl 错误中删除秘密

出于安全原因,在控制台窗口的 vcpkg 输出中打印错误时,不再显示 curl 错误(例如 x-azblob SAS)中列出的机密。

公关:微软/vcpkg-tool#499

 

可用于测试三胞胎的端口总数

三胞胎可用端口
x86-windows1,744
x64 窗口1,793
x64-windows-静态1,689
x64-windows-静态-md1,705
x64-uwp925
arm64-windows1,327
手臂-uwp874
x64-osx1,649
x64-linux1,724

虽然 vcpkg 支持更多种类的目标平台 x 架构,但上面的列表经过例行测试,以确保更新的端口不会破坏目录中的其他端口。

 

感谢我们的贡献者

如果没有我们开源社区的贡献,vcpkg 不可能有今天的成就。感谢您一如既往的支持!以下人员在 2022 年 3 月 31 日至 5 月 10 日期间为 vcpkg 和 vcpkg-tool 存储库做出了贡献:

  • Thomas1664(36 次提交)
  • chausner(33 次提交)
  • autoantwort(23 次提交)
  • dg0yt(18 次提交)
  • Neumann-A(11 次提交)
  • RT222(7 次提交)
  • 达舒尔(4 次提交)
  • 波斯佩洛夫(4 次提交)
  • 柯里安(3 次提交)
  • ZeeWanderer(2 次提交)
  • mathisloge (2 次提交)
  • cenit (2 次提交)
  • AenBleidd(2 次提交)
  • day253(2 次提交)
  • Ryan-rsm-McKenzie (1 提交)
  • evpobr (1 提交)
  • yurybura (1 提交)
  • 伦克利夫(1 次提交)
  • wrobelda (1 提交)
  • 扭曲(1 次提交)
  • 霍伦马尔(1 次提交)
  • podsvirov(1 次提交)

 

学到更多

您可以在 GitHub 上找到完整的 5 月发行说明,以获取主存储库。可以在vcpkg-tool Releases 页面上查看 vcpkg 工具的最新更新。如果您是 vcpkg 的新手,或者对包管理器如何让您作为 C/C++ 开发人员的生活更轻松感到好奇,请查看vcpkg 网站 - vcpkg.io

如果您想为 vcpkg 及其库目录做出贡献,或者想就任何事情向我们提供反馈,请查看我们的GitHub存储库。请在我们的问题跟踪器中报告错误或请求更新端口,或在我们的论坛中加入更一般的讨论。有关我们的首要任务和积压工作的概述,请查看我们的路线图页面

新闻来源:微软C++团队博客