【包管理器】vcpkg

有些话、适合烂在心里 提交于 2020-04-26 11:05:22

 1. vcpkg 介绍      

        vcpkg 是用于 C++ 的一种命令行包管理器。 它极大地简化了 Windows、Linux 和 MacOS 上第三方库的购置与安装。 如果项目要使用第三方库,建议通过 vcpkg 来安装它们。 vcpkg 同时支持开源和专有库。 已测试 vcpkg Windows 目录中所有库与 Visual Studio 2015、Visual Studio 2017 及 Visual Studio 2019 的兼容性。 在 Windows 和 Linux/MacOS 目录之间,vcpkg 现已支持超过 1900 个库。 C++ 社区正在不断向两个目录添加更多的库。一台计算机上可以有多个 vcpkg 克隆。 每一克隆都可以设置为生成带有你首选的编译开关的自定义库集合。 每个克隆都是一个自包含的环境,它自身的 vcpkg.exe 副本仅可在自己的层次结构中运行。 vcpkg 不会被添加到任何环境变量中,并且在 Windows 注册表或 Visual Studio 上也没有依赖项。

        对于 Windows 目录中的库,vcpkg 会下载源,而不是二进制文件。 它使用可以找到的最新版 Visual Studio 编译这些源代码。 在 C++ 中,有一点至关重要,即你的应用程序代码以及你所使用的任何库应均是由同一编译器和编译器版本编译的。 通过 vcpkg 可以消除或最大程度减少不匹配二进制文件的存在风险及它可能造成的问题。 对于使用特定编译器版本的标准化团队而言,可让一位成员使用 vcpkg 下载源并编译一组二进制文件。 他们随后可以使用导出命令将二进制文件和标头进行压缩打包,从而与其他团队成员共享。

2. vcpkg 用法

安装:从 GitHub 克隆 vcpkg 存储库:https://github.com/Microsoft/vcpkg。 可凭喜好下载到任意文件夹位置。

在根文件夹中运行 bootstrapper:

  • bootstrap-vcpkg.bat (Windows)
  • ./bootstrap-vcpkg.sh (Linux、MacOS)

命令:对于 CMAKE 项目,通过 CMAKE_TOOLCHAIN_FILE 来配合使用库和 find_package()。 例如:

卸载:只需删除 vcpkg 目录。 删除此目录会卸载 vcpkg 分发以及 vcpkg 已安装的所有库。

 
命令 描述
vcpkg search [pat] 搜索可安装的包
vcpkg install <pkg>... curl:x64-windows 安装包curl包分号后面的表示架构
vcpkg remove <pkg>... 卸载包
vcpkg remove --outdated 卸载所有过期包
vcpkg list 列出已安装的包
vcpkg update 显示用于更新的包列表
vcpkg upgrade 重新生成所有过期包
vcpkg hash <file> [alg] 通过特定算法对文件执行哈希操作,默认为 SHA512
vcpkg integrate install 使已安装包在用户范围内可用。 首次使用时需要管理权限
vcpkg integrate remove 删除用户范围的集成
vcpkg integrate project 为使用单个 VS 项目生成引用 NuGet 包
vcpkg export <pkg>... [opt]... 导出包
vcpkg edit <pkg> 打开端口进行编辑(使用 %EDITOR%,默认为“code”)
vcpkg create <pkg> <url> [archivename] 创建新程序包
vcpkg cache 列出缓存的已编译包
vcpkg version 显示版本信息
vcpkg contact --survey 显示联系信息,以便发送反馈。

3. vcpkg 文件结构

所有 vcpkg 功能和数据都自包含在称为“实例”的单独目录层次结构中。 没有注册表设置或环境变量。 可以在一台计算机上设置任意数量的 vcpkg 实例,它们彼此互不干扰。

vcpkg 实例的内容如下:

  • buildtrees - 包含从中生成每个库的源的子文件夹
  • docs - 文档和示例
  • downloads - 任何已下载工具或源的缓存副本。 运行安装命令时,vcpkg 会首先搜索此处。
  • installed - 包含每个已安装库的标头和二进制文件。 与 Visual Studio 集成时,实质上是相当于告知它将此文件夹添加到其搜索路径。
  • packages - 在不同的安装之间用于暂存的内部文件夹。
  • ports - 用于描述每个库的目录、版本和下载位置的文件。 如有需要,可添加自己的端口。
  • scripts - 由 vcpkg 使用的脚本(cmake、powershell)。
  • toolsrc - vcpkg 和相关组件的 C++ 源代码
  • triplets - 包含每个受支持目标平台(如 x86-windows 或 x64-uwp)的设置。

学习于:https://docs.microsoft.com/zh-cn/cpp/build/vcpkg?view=vs-2019

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!