vcpkg快速入门手册

vcpkg 是一个跨平台的 C++ 包管理器,支持 Windows、Linux 和 macOS,简化第三方库的安装。本文详细介绍了 vcpkg 的安装、使用方法,包括获取和编译 vcpkg、理解其文件结构、设置环境变量、常用命令,以及与 Visual Studio、CMake 的集成。此外,还涵盖了多个常用 C++ 库的 CMake 配置方式,如 Boost、Cereal、Ceres Solver 等。在使用过程中,可能会遇到的错误和解决方案也进行了说明,如未安装 VS 英文语言包、网络下载问题等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


如果你希望了解vcpkg,希望解决包括如何使用vcpkg构建软件包,如何将vcpkg构建的软件包集成到Visual Studio,如何使用vcpkg构建指定版本的软件包,如何解决vcpkg的常见报错信息,如何与CMake配合构建工程等等问题,请你认真阅读本文档以快速入门!

1. 简介

vcpkg 是适用于 C 和 C++ 库的跨平台命令行包管理器。 它简化了 Windows、Linux 和 macOS 上第三方库的购置与安装。 如果项目要使用第三方库,建议通过 vcpkg 来安装它们。 vcpkg 同时支持开源和专有库。 已测试 vcpkg Windows 目录中所有库与 Visual Studio 2015、Visual Studio 2017 及 Visual Studio 2019 的兼容性。 在 Windows 和 Linux/macOS 目录之间,vcpkg 现已支持数千个库。 C++ 社区会不断向两个目录添加更多的库。

微软官方介绍链接

2. 安装与使用

2.1 获取vcpkg

vcpkg的官方源码站点为:https://github.com/microsoft/vcpkg

可以使用git命令获取官方代码仓库

git clone https://github.com/microsoft/vcpkg

2.2 编译vcpkg

  • Windows平台

    在控制台中切换到vcpkg所在目录,运行vcpkg目录下的bootstrap-vcpkg.bat命令,编译好后会在vcpkg所在目录下生产vcpkg.exe文件。

      C:\Users\Administrator>F:
      F:\>cd vcpkg/vcpkg
      F:\vcpkg\vcpkg>bootstrap-vcpkg.bat
    

    注意:最新版官方去掉了本地编译的过程,会从官方仓库中下载已经生成好的vcpkg.exe文件

  • Linux平台

    在终端中执行vcpkg目录下的sudo bash ./ bootstrap-vcpkg.sh命令,会生成一个可执行文件vcpkg。定义环境变量VCPKG_ROOT="/vcpkg"

2.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)的设置。

2.4 设置vcpkg的环境变量

为了方便vcpkg的使用,建议在环境变量中设置如下值:

环境变量 描述
VCPKG_DEFAULT_TRIPLET x64-windows vcpkg默认构建的三元组,通常在Windows 64位平台下可以直接设置为x64-windows
VCPKG_ROOT F:\vcpkg\vcpkg vcpkg的工作目录,对于本地存在多个版本的vcpkg,不建议设置此变量
VCPKG_DOWNLOADS F:\vcpkg\downloads vcpkg下载软件源和工具的缓存目录,建议保留此文件夹中的所有文件。

2.5 vcpkg的常用命令

  • help命令

    可以查看vcpkg的常用命令

      vcpkg help
    
  • install命令

    安装一个指定的软件包,该C++软件包必须被vcpkg支持,即在ports文件夹内能找到该软件包的端口描述。

      vcpkg install gdal
    

    需要注意的是,通常一个软件包可以附带多种其他三方库的功能支持,部分功能已经被vcpkg支持(可以通过 s e a r c h search search命令查看软件包附带的第三方支持),通过vcpkg安装软件包时也可以同时制定三方库特性的支持。例如安装一个Windows系统64位版本的带libspatialite支持的gdal库可以使用如下命令:

      vcpkg install gdal[core,libspatialite]  --triplet=x64-windows
    

    vcpkg在编译软件包时,会将从软件包官方源中下载到的tar格式源码解压到buildtrees文件夹,并且编译的中间文件也会在buildtrees文件夹。默认情况下,buildtrees文件夹在vcpkg的根目录下,也可以在安装软件包时指定buildtrees文件夹的实际位置,例如:

    vcpkg install gdal[core,libspatialite]  --triplet=x64-windows --x-buildtrees-root=F:/vcpkg/buildtrees
    
  • remove命令

    移除一个指定的安装包,例如删除已经安装好的gdal包使用如下命令:

     vcpkg remove gdal
    

    如果希望移除所有outdated的安装包,可以使用以下命令:

     vcpkg remove --outdated
    

    有些时候,仅仅通过remove命令删除已经安装好的软件包会出现异常。例如可能出现删除安装包后,重新安装包提示“已经安装”。如果我们需要彻底将包从installed目录中移除,需要执行以下流程

    • packages目录中找到包对应的目录(注意区分版本),将整个目录全部删除;

    • buildtrees 目录中找到包对应的目录,将整个目录全部删除;

    • 进入installed\vcpkg\info目录,查找包对应的 l i s t list list文件。 l i s t list list文件中记录了包生成后的lib、dll、pdb、include头文件和其他辅助文件,手动删除这些文件,最后删除 l i s t list list文件本身;

    • 进入installed\vcpkg目录,打开 s t a t u s status status文件,搜索包,将包相关内容手动删除。

status文件中gdal库相关描述

  • list命令

    列表所有已经安装的软件包,也可以指定名以列出按照的某一具体软件包

     vcpkg list # list all installed packages
     vcpkg list gdal # list installed gdal
    

    通过 l i s t list list命令可以方便地查询某个安装包是否安装以及对应的安装版本:

  • search命令

    搜索vcpkg支持的安装包:

     vcpkg search gdal
    

    当需要查看安装包附带哪些三方库支持时,使用 s e a r c h

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值