vcpkg:使用 vcpkg

article/2025/10/4 2:40:22

命令

查看Vcpkg支持的开源库列表

查看Vcpkg支持的开源库列表
.\vcpkg\vcpkg search

安装一个开源库

这里的“安装”其实是指下载和编译。

比如我们需要安装常用的jsoncpp库,那么执行命令

.\vcpkg\vcpkg install jsoncpp

输出

Computing installation plan...
A suitable version of cmake was not found (required v3.19.2). Downloading portable cmake v3.19.2...
Extracting cmake...
A suitable version of 7zip was not found (required v18.1.0). Downloading portable 7zip v18.1.0...
Extracting 7zip...
A suitable version of nuget was not found (required v5.5.1). Downloading portable nuget v5.5.1...
Downloading nuget...https://dist.nuget.org/win-x86-commandline/v5.5.1/nuget.exe -> C:\Users\oceanstar\vcpkg\win\vcpkg\downloads\22ea847d-nuget.exeC:\Users\oceanstar\vcpkg\win>.\vcpkg\vcpkg install jsoncpp
Computing installation plan...
A suitable version of cmake was not found (required v3.19.2). Downloading portable cmake v3.19.2...
Extracting cmake...
A suitable version of 7zip was not found (required v18.1.0). Downloading portable 7zip v18.1.0...
Extracting 7zip...
A suitable version of nuget was not found (required v5.5.1). Downloading portable nuget v5.5.1...
The following packages will be built and installed:jsoncpp[core]:x86-windows -> 1.9.4
Detecting compiler hash for triplet x86-windows...
A suitable version of powershell-core was not found (required v7.1.0). Downloading portable powershell-core v7.1.0...
Downloading powershell-core...https://github.com/PowerShell/PowerShell/releases/download/v7.1.0/PowerShell-7.1.0-win-x86.zip -> C:\Users\oceanstar\vcpkg\win\vcpkg\downloads\PowerShell-7.1.0-win-x86.zipC:\Users\oceanstar\vcpkg\win>.\vcpkg\vcpkg install jsoncpp
Computing installation plan...
The following packages will be built and installed:jsoncpp[core]:x86-windows -> 1.9.4
Detecting compiler hash for triplet x86-windows...
A suitable version of powershell-core was not found (required v7.1.0). Downloading portable powershell-core v7.1.0...
Extracting powershell-core...
Could not locate cached archive: C:\Users\oceanstar\AppData\Local\vcpkg\archives\ca\ca86469a9ddb0e4cd2f352ca94cbfdc3993b0b17.zip
Starting package 1/1: jsoncpp:x86-windows
Building package jsoncpp[core]:x86-windows...
-- Downloading https://github.com/open-source-parsers/jsoncpp/archive/9059f5cad030ba11d37818847443a53918c327b1.tar.gz -> open-source-parsers-jsoncpp-9059f5cad030ba11d37818847443a53918c327b1.tar.gz...
-- Extracting source C:/Users/oceanstar/vcpkg/win/vcpkg/downloads/open-source-parsers-jsoncpp-9059f5cad030ba11d37818847443a53918c327b1.tar.gz
-- Using source at C:/Users/oceanstar/vcpkg/win/vcpkg/buildtrees/jsoncpp/src/3918c327b1-034a82149a.clean
-- Configuring x86-windows
-- Building x86-windows-dbg
-- Building x86-windows-rel
-- Installing: C:/Users/oceanstar/vcpkg/win/vcpkg/packages/jsoncpp_x86-windows/share/jsoncpp/copyright
-- Performing post-build validation
-- Performing post-build validation done
Stored binary cache: C:\Users\oceanstar\AppData\Local\vcpkg\archives\ca\ca86469a9ddb0e4cd2f352ca94cbfdc3993b0b17.zip
Building package jsoncpp[core]:x86-windows... done
Installing package jsoncpp[core]:x86-windows...
Installing package jsoncpp[core]:x86-windows... done
Elapsed time for package jsoncpp:x86-windows: 53.86 sTotal elapsed time: 1.654 minThe package jsoncpp:x86-windows provides CMake targets:find_package(jsoncpp CONFIG REQUIRED)target_link_libraries(main PRIVATE jsoncpp_lib jsoncpp_object)

我们大致可以了解到install会经历这几个过程:

  • 环境初始化
  • 下载源代码(如果已经在cache中,则不下载)
  • 校验文件有效性
  • 解压缩源代码
  • 利用配套工具配置源码工程,在这里是使用的是cmake(如果是ffmpeg,则用msys2)
  • 编译源码。一般会同时编译Release和Debug版本。
  • 把编译好的文件拷贝到相关目录中去(一般是installed目录)

指定编译某种架构的程序库

如果不指定安装的架构,vcpkg默认把开源库编译成x86的Windows版本的库。那vcpkg总共支持多少种架构呢?我们可以使用如下命令便知:

.\vcpkg.exe help triplet

vcpkg支持众多架构,有arm-uwp, arm-windows, arm64-uwp, arm64-windows, x64-linux, x64-osx, x64-uwp, x64-windows, x64-windows-static, x86-uwp, x86-windows, x86-windows-static。

那如果要安装编译某一个架构的开源库,我们该怎么写呢?我们只需要在需要安装的包后面指定相应的triplet即可。例如我们需要编译64位版本的jsoncpp,那么执行如下命令即可。

.\vcpkg.exe install jsoncpp:x64-windows

移除一个已经安装(编译)的开源库

如果移除一个已经安装的开源库,那么执行remove指令即可。比如我们要移除jsoncpp,那么执行命令:

.\vcpkg.exe remove jsoncpp

注意:

  • 这个时候只是移除了默认的x86-winodws版本的文件,如果有其他平台的版本需要移除,需要制定相应的triplet。
  • 移除也只是移除了二进制程序库而已,源码包和解压缩的源码并没有删除。

如果想要一键移除“过时”的包,执行命令:

.\vcpkg.exe remove --outdated

已安装的包更新

一般有两种更新方式。一个是update指令,可以显示可以升级的开源库的列表。另一个是upgrade的指令,会重新编译所有需要更新的包。

C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg upgrade

导出已经安装的开源库

有的时候,一个项目组中有很多人,不需要每个人都参与编译。一个人编译好所有开源库后到处给别人即可。有的时候也是出于备份的目的,也会导出已经安装的开源库。导出可以执行export指令。例如,我要导出jsoncpp库,那么执行:

.\vcpkg.exe export jsoncpp --7zip

注意,导出时必须指定导出的包格式。vcpkg支持5种导出包格式,有:
在这里插入图片描述
一般地,导出包的格式为:vcpkg-export-<日期>-<时间>

默认情况下只会导出x86-windows的包,如果要导出所有包,那需要制定相应的triplet。比如,如果同时导出x86和x64版本的jsoncpp,那执行命令:

.\vcpkg.exe export jsoncpp jsoncpp:x64-windows --7zip

这个命令等价于:

.\vcpkg.exe export jsoncpp:x86-windows jsoncpp:x64-windows --7zip

如果要指定输出目录和特定文件名,需使用"–output="参数

导入备份的开源库

.\vcpkg.exe import xxx.7z

解决vcpkg下载缓慢

第一步:去vcpkg里把下载链接复制出来,Downing后面的就是我们的下载链接
在这里插入图片描述
第二步:在外面用浏览器或别的下载工具下载这个文件
在这里插入图片描述
第三步:我们进去\vcpkg\downloads\temp这个文件夹中看看vcpkg对这个文件的命名是什么
在这里插入图片描述
第四步:将我们的文件也命名成这个,直接复制粘贴即可,然后放到\vcpkg\downloads\这个文件夹里

第五步:直接点击右上角关闭按钮关闭vcpkg,重新打开,重新输入install命令即可,可以看到vcpkg已经采用了我们自己下好的包而不是它重新下一个了,这里利用的是vcpkg的缓存机制

# 搜索想要安装的包
C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg search libssh2
curl[ssh]                             SSH support via libssh2
libgit2[ssh]                          SSH support via libssh2
libssh2              1.9.0            The SSH libraryIf your library is not listed, please open an issue at and/or consider making a pull request:https://github.com/Microsoft/vcpkg/issues# 安装指定的包,curl包分号后面的表示架构
C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg install libssh2:x64-windows# 列出已经安装的包
C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg list# 已安装的包更新
C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg upgrade# 删除已安装的包
C:\Users\oceanstar\vcpkg\win\vcpkg》 **vcpkg remove libssh2:x64-windows

Vcpkg和Visual Studio的集成

上面我们已经安装了一些第三方库,那如何使用呢?常规情况下,我们需要设置include目录、lib目录等,会有很多工作量。Vcpkg提供了一套机制,可以全自动的适配目录,而开发者不需要关心已安装的库的目录在哪里,也不需要设置。这是Vcpkg的一大优势。

集成到全局

“集成到全局”适用于Visual Studio开发环境和msbuild命令行。执行命令:

\win\vcpkg> .\vcpkg integrate install
Applied user-wide integration for this vcpkg root.All MSBuild C++ projects can now #include any installed libraries.
Linking will be handled automatically.
Installing new libraries will make them instantly available.CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/Users/oceanstar/vcpkg/win/vcpkg/scripts/buildsystems/vcpkg.cmake"

当出现“Applied user-wide integration for this vcpkg root.”字样的时候,说明已经集成成功。这时候可以在任意的工程中使用安装好的第三方库。

移除全局集成

 .\vcpkg integrate remove

集成到工程

上面已经可以集成到全局,为什么还要“集成到工程”呢?因为在大部分情况下,我们不希望集成到全局,毕竟有很多第三方库我们希望自定义处理一下,或者干脆不想集成第三方库。那么集成到工程是最灵活的处理方式。也是工程级项目推荐的处理方式。

“集成到工程”是整个vcpkg中最复杂的一项,它需要利用Visual Studio 中的nuget插件来实现。我们接下来一步一步来说。

生成配置

 .\vcpkg integrate project

这时候会在<vcpkg_dir>\scripts\buildsystems目录下,生成nuget配置文件.
其中<vcpkg_dir>是指vcpkg实际所在目录。

基本配置


http://chatgpt.dhexx.cn/article/3P3jcAaW.shtml

相关文章

【vcpkg】vcpkg:用于 Windows、Linux 和 macOS 的 C++ 包管理器

官网:https://docs.microsoft.com/zh-cn/cpp/build/vcpkg?viewmsvc-160&viewFallbackFromvs-2019 vcpkg vcpkg 是用于 C 的一种命令行包管理器。 它极大地简化了 Windows、Linux 和 macOS 上第三方库的购置与安装。 如果项目要使用第三方库&#xff0c;建议通过 vcpkg 来…

在Visual Studio中激活vcpkg环境

在Visual Studio 2022 17.4中&#xff0c;vcpkg环境现在会自动激活。 一个vcpkg环境是由一个manifest文件描述的&#xff0c;该文件捕获了构建应用程序所必需的工件&#xff08;了解更多关于vcpkg工件的信息&#xff09;。 当前vcpkg工件的体验主要是针对嵌入式开发人员&…

Visual Studio工具 vcpkg简介

vcpkg是命令行包管理工具&#xff0c;在使用第三方库的c或c开发中可以简化相关的配置操作。vcpkg安装的包支持Visual Studio 2015 update 3及以上版本&#xff0c;包括vs2017工具集&#xff0c;目前在windows平台已有超过900多个包&#xff0c;linux平台超过350个包。在默认情况…

windows 下包管理工具vcpkg安装

主要参考博文&#xff1a;vcpkg安装及使用_我叫电池的博客-CSDN博客_vcpkg安装 由于需要在离线环境下面搭建开发环境&#xff0c;所有的包只能离线安装了&#xff0c;包括这个管理工具vcpkg的安装&#xff0c;也必须是离线安装。 一. 下载安装vcpkg管理工具 下载目录&#x…

Vcpkg介绍及使用

Vcpkg用于在Windows、Linux、Mac上管理C和C库&#xff0c;极大简化了第三方库的安装&#xff0c;它由微软开源&#xff0c;源码地址&#xff1a;https://github.com/Microsoft/vcpkg&#xff0c;最新发布版本为2023.04.15 Release&#xff0c;它的license为MIT。 在windows上安…

Vcpkg C/C++库管理工具安装和使用教程(链接VS2019)

1、概述&#xff1a; Vcpkg是可用于Windows&#xff0c;linux和MacOS上跨平台的 C/C 库管理工具&#xff0c;是一款开源工具。在此对vcpkg的安装做一个简要的说明&#xff0c;有关具体命令的使用&#xff0c;在安装成功后使用 vcpkg help 或者 vcpkg help[comment] 可以获取特…

vcpkg安装及使用

vcpkg安装及使用 参考链接 1. 安装 内容复制自官方文档 首先&#xff0c;请下载vcpkg并执行 bootstrap.bat 脚本。 它可以安装在任何地方&#xff0c;但是通常我们建议您使用 vcpkg 作为 CMake 项目的子模块&#xff0c;并将其全局安装到 Visual Studio 项目中。我们建议您使…

vcpkg安装指定版本的库

由于fmt版本过高&#xff0c;部分依赖其的库使用时会报错&#xff08;错误 C2338 Cannot format an argument. To make type T formattable provide a formatter<T> specialization&#xff09;。 vcpkg install fmt:x64-windows 默认装的是fmt9.1.0&#xff0c;但是…

vcpkg基本使用

1. vcpkg安装 将下列powershell代码存成ps1文件&#xff0c;在目录下shift右键->打开power shell窗口&#xff0c;运行脚本后vcpkg即安装完成。 # 1. 创建目录、下载vcpkg&#xff1a; mkdir -f D:/APPs cd D:/APPs # github # git clone https://github.com/microsoft/vc…

Visual Studio开源库集成器Vcpkg全教程--利用Vcpkg轻松集成开源第三方库

利用Vcpkg轻松集成开源第三方库 1. 为什么要用Vcpkg 1.1. 传统使用开源库的方法 1.1.1. 编译工具1.1.2. 编译类型1.1.3. 工程目录设定 1.2. Vcpkg的优点 2. 获取Vcpkg 2.1. 下载Vcpkg2.2. 编译Vcpkg 3. 使用Vcpkg 3.1. 查看Vcpkg支持的开源库列表3.2. 安装一个开源库3.3. 指定编…

VCPKG安装和使用教程

文章目录 1. 安装2. 使用命令选项 3. 集成vcpkgWindows 上的 Visual Studio 集成Linux 或 macOS 上的 Visual Studio Code 集成删除 vcpkg 集成 使用举例4. 详细介绍4.1 新增库4.2 删除库4.3 查看已经安装的列表4.4 更新已经安装的开源库 1. 安装 去GitHub上下载源码&#xff…

vcpkg快速入门手册

文章目录 1. 简介2. 安装与使用2.1 获取vcpkg2.2 编译vcpkg2.3 vcpkg的文件夹层次结构2.4 设置vcpkg的环境变量2.5 vcpkg的常用命令2.6 安装包与Visual Studio集成 3. 常见的C库的CMake配置方式3.1 Boost3.2 cereal3.3 Ceres Solver3.4 CGAL3.5 FLANN3.6 GDAL3.7 GLEW3.8 GMP3.…

vcpkg安装和使用--学习入门

前言 vcpkg是一个C的包管理器。 包管理器是专门管理一些代码库的。比如一些大佬们开源的一些NB的框架&#xff0c;我们可以用vcpkg将他们放到自己的项目中。然后就可以直接用了。 我用的win10vs2019 【1】安装 &#xff08;1&#xff09;先git clone下载下来vcpkg文件夹。 …

Vcpkg 的安装与使用

Vcpkg 的安装与使用 欢迎大家来我的博客逛逛&#x1f44f;&#xff1a;hauhau.cn 需求 先确保你已经安装了: Windows7 及以上的版本GitVisual Studio 2015 Update 3 及以上的版本 关于美化 Windows Terminal 及 Powershell&#xff0c;可以查看这篇优秀文章: Windows-Termi…

C++第三方库管理工具vcpkg使用教程

目录 一、vcpkg介绍二、vcpkg安装1、安装vs英语语言包2、更新PowerShell版本3、配置终端4、clone vcpkg 三、vcpkg具体使用1、演示安装jsoncpp库2、指定位数安装3、查找支持的系统架构4、查看已经安装了哪些库5、如何卸载vcpkg 四、如何集成到visual studio1、集成到Visual Stu…

NS版暗黑破坏神3金手指开发教程(12)

上一节&#xff0c;我们了解到了宝石升级动画延时机制的修改&#xff0c;这一节&#xff0c;我们将全方位地介绍游戏中多个常用功能的延时机制修改&#xff0c;优化玩家的游戏体验&#xff0c;相信经过本节&#xff0c;读者的程序分析能力会有进一步提高 1. 我们首先从鉴定传奇…

NS版暗黑破坏神3金手指开发教程(2)

上一节&#xff0c;介绍了开发金手指所需的工具&#xff0c;这一节&#xff0c;正式开始简单的金手指修改 1. 首先&#xff0c;分别要准备好2.6.6的main.elf和原始版本待调试信息的DiabloIIINX64ra.elf&#xff0c;因为我们要修改的是2.6.6版本的elf&#xff0c;和最初带调试信…

NS版暗黑破坏神3金手指开发教程(7)

上一节&#xff0c;我们讲解了通过代码Hack的方式修改人物的魔法物品获取率和金币获取量等属性&#xff0c;这一节&#xff0c;我们将一鼓作气&#xff0c;拿下移速攻速等更复杂的属性修改 1. 我们在原始版本里搜索移速英文movespeed得到一个结果&#xff0c;双击打开伪代码 2…

Unity 基础常用的脚本(一)

1.获取相机射线 var ray Camera.main.ScreenPointToRay(Input.mousePosition); //GameObject.CreatePrimitive(PrimitiveType.Cube).transform.position ray.GetPoint(10.0f); transform.LookAt(ray.GetPoint(10.0f)); 2.AddForce和velocity有什么区别&#xff1f; AddForc…

NS版暗黑破坏神3金手指开发教程(10)

上一节&#xff0c;我们讲解了一击必杀&#xff0c;技能冷却无CD等人物战斗时用到的金手指制作&#xff0c;这一节&#xff0c;将会讲解人物升级相关的功能以及宝石和打孔器等材料数量的锁定功能制作 1. 在游戏中特别是在游戏后期&#xff0c;我们会发现人物随着等级的提高&am…