培训
模块
了解 Windows 程序包管理器工具 - Training
使用 Windows 程序包管理器简化计算机上的软件安装和维护。 介绍前端组件和命令、Windows 程序包管理器存储库,以及如何在该存储库中贡献内容。
Vcpkg 是由 Microsoft 和 C++ 社区维护的免费开源 C/C++ 包管理器,可在 Windows、macOS 和 Linux 上运行。 它是核心的 C++ 工具,使用 C++ 和 CMake 脚本编写。 它旨在解决管理 C/C++ 库的独特难题。
vcpkg 端口是一种版本控制生成方案,可生成一个包。 最常见的包类型是包含标头、源代码和二进制文件的 C/C++ 库。
三元组以单个方便的名称捕获目标生成环境(cpu、os、编译器、运行时等)。 vcpkg 默认提供超过 70 个三元组,但你也可以定义自己的三元组。
为了在系统上安装包,vcpkg 会运行端口的配方文件(CMake 脚本)。 该脚本可能包含下载源代码或在系统中运行生成的步骤。 在生成期间,vcpkg 使用三元组中的信息来确保生成的包与所需的配置匹配。
尽管 vcpkg 根据需要从源生成库,但可以在二进制缓存中备份生成的包。 这样,便可以运行其他开发人员计算机或持续集成以引用这些预生成的包,而无需每次运行新的生成。 vcpkg 会检查缓存是否已包含有效的现有包以及相应的二进制文件,以确定是否需要重新生成。
可以在清单文件中声明直接依赖项并添加可选功能或版本约束。 清单文件可以签入到源控制系统中并与团队共享。
vcpkg 具有处理包版本的唯一方法。 清单文件可以引用默认设置的单个基线版本。 该基线提供轻而易举且无冲突的依赖项管理,具有完全可重现性。 此外,你仍然可以通过固定各个包版本来获得更高级的控制。
注册表是 vcpkg 用户可以安装的端口和可用版本的集合。 vcpkg 默认提供开放源代码库的特选注册表。 还可以为自定义、修补或私人库创建自己的注册表。
资产缓存可使 vcpkg 在实体隔离和离线环境中工作,即使远程主机出现故障或被盗用,也可确保业务连续性。 它使用下载镜像上传和还原资产,例如源代码和生成工具。
NuGet 是 .NET 包管理器,通常用于 C/C++ 开发,尤其适用于同时包含 .NET 项目的 MSBuild 解决方案。 一般情况下,Microsoft C++ 团队不建议使用 NuGet 进行 C/C++ 开发,因为 NuGet 存在以下限制:
.vcxproj
文件不支持 NuGet PackageReference,并且由于 C++ 和 .NET MSBuild 项目之间存在技术和体系结构差异,因此没有添加它的计划。 这意味着 NuGet C++ 用户不会受益于使用全局缓存和在具有条件逻辑访问权限的简单 MSBuild 术语中引用依赖项的功能。适用于 Linux、macOS 和 Windows 的各种系统包管理器可用于获取和管理 C/C++ 库。 这些包管理器通常非常适合用于管理应用程序。 但是,由于其支持的一般性质,它们通常无法提供令 C/C++ 开发人员受益的功能。 虽然你的情况可能会有所不同,并且某些系统包管理器确实提供其中一些功能,但没有一个系统包管理器拥有以下全部功能:
在有些情况下使用系统包管理器绝对更合适。
vcpkg 旨在与系统包管理器并行工作,因此可以随意使用最适合于每个依赖项的工具。
若要试用 vcpkg,请查阅我们的入门教程:
如果生成系统不是 CMake 或 MSBuild,vcpkg 也支持与首选环境进行手动集成。
培训
模块
了解 Windows 程序包管理器工具 - Training
使用 Windows 程序包管理器简化计算机上的软件安装和维护。 介绍前端组件和命令、Windows 程序包管理器存储库,以及如何在该存储库中贡献内容。