vcpkg 的新功能(2024 年 3 月)

vcpkg 的新功能(2024 年 3 月)

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

vcpkg软件包管理器的2024年3月19日和2024年3月25日版本更新包括了arm64ec平台表达式、混合静态和动态库的灵活性、诊断改进、二进制缓存ABI计算的变化和错误修复。新增了21个端口和405个更新,还有文档变更和bug修复。

🔎

延伸解读

静态与动态库混合使用的新灵活性

本次更新允许在静态三元组中使用DLL,前提是开启BuildPolicy::DLLS_IN_STATIC_LIBRARY,且这些DLL仍需检查CRT和架构。同时,动态三元组中也可以包含静态库,只要CRT链接方式匹配。这为处理依赖关系复杂的项目提供了更多组合可能,但需注意CRT和架构的一致性要求,避免链接错误。

二进制缓存ABI计算的变化

使用--only-downloads安装端口时,不再影响二进制缓存功能所使用的ABI计算。这意味着仅下载操作不会改变缓存的键值,从而避免因下载行为导致缓存失效或重复构建。对于依赖二进制缓存加速构建的团队,这一改动有助于提高缓存命中率,减少不必要的重新编译。

诊断信息改进与错误修复

vcpkg改进了诊断输出,例如对包规格解析错误给出更明确的提示,并建议正确的格式。此外,修复了路径赋值中包含')'字符导致命令提前退出的错误,以及版本覆盖功能与某些版本方案不兼容的问题。这些修复提升了工具在复杂场景下的稳定性和易用性。

端口数量与平台支持

vcpkg公共注册表现有2415个库,本月新增21个端口,更新405个现有端口。针对13个主要三元组,vcpkg会验证每个端口变更不会破坏其他端口。不同三元组支持的端口数量差异较大,例如x64-windows支持2273个,而arm64-uwp仅支持1225个。选择目标平台时需留意端口可用性。

❓

Q&A

vcpkg在2024年3月的更新中新增了哪些功能?

新增了arm64ec平台表达式、混合静态和动态库的灵活性、改进的诊断输出、二进制缓存ABI计算的变化和多个错误修复。

vcpkg的公共注册表中目前有多少个库?

vcpkg公共注册表中现有2415个库。

vcpkg在此次更新中修复了哪些错误?

修复了与路径分配中存在')'字符相关的命令提前退出的错误,以及其他多个小错误。

vcpkg如何支持混合使用静态和动态库?

vcpkg允许在静态三元组中使用DLL,只需将BuildPolicy::DLLS_IN_STATIC_LIBRARY设置为开启,并确保DLL的CRT和架构匹配。

此次更新中新增了多少个端口?

此次更新新增了21个端口。

vcpkg的文档更新了哪些内容?

文档更新包括新增文章、改进现有内容以及统一一些清单模式文章和修复链接。

🏷️

标签

➡️

继续阅读