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

article/2025/10/5 4:03:39

目录

  • 一、vcpkg介绍
  • 二、vcpkg安装
    • 1、安装vs英语语言包
    • 2、更新PowerShell版本
    • 3、配置终端
    • 4、clone vcpkg
  • 三、vcpkg具体使用
    • 1、演示安装jsoncpp库
    • 2、指定位数安装
    • 3、查找支持的系统架构
    • 4、查看已经安装了哪些库
    • 5、如何卸载vcpkg
  • 四、如何集成到visual studio
    • 1、集成到Visual Studio全局
    • 2、移除全局集成
    • 3、集成到工程
  • 五、集成到CMake
  • 六、如何使用vcpkg下载好的库


一、vcpkg介绍

  在使用C/C++编写项目时, 引用第三方库是很麻烦的事, 需要手动下载源码然后编译最后再添加到项目里,配置头文件、lib、dll,如果是一个简单点的库,编译加配置起来也不麻烦,可能半个小时或一个上午就能解决;如果是一个复杂点的库,那可能是一天、乃至一周可能都无法编译成功,例如ffmpeg, openssl,gRPC等等,这些库在windows上的的编译极其麻烦,如果是新手,可能更痛苦。相比 java有maven,python有pip,go有go mod, C#有NuGet,Rust有cargo,这些语言在导入第三方库时都很方便,修改版本也方便,但是对于C++项目则很痛苦,vcpkg的出现解决了C/C++编译第三库困难的问题,vcpkg跨平台, 在windows、linux、MacOS都可以使用。安装vcpkg,想要使用哪个库,vcpkg只要一条命令, 直接用安装编译,无需配置头文件、lib、dll, 直接写代码即可,十分的方便。
  官网:https://vcpkg.io/en/index.html
在这里插入图片描述
  点击Get started可以查看如何安装vcpkg
  点击Browse Packages可以查找想要的库

  下面介绍在window系统如何安装使用vcpkg.

二、vcpkg安装

1、安装vs英语语言包

  vcpkg安装第三方库时,会有visual studio的语言不是英语的错误,如果不安装英语语言包,使用vcpkg安装第三方库时会有如下报错

Error: in triplet x64-windows: Unable to find a valid Visual Studio
instance The following VS instances were excluded because the English
language pack is unavailable:

  例如我的电脑安装的是vs2019,需要修改安装,增加英语语言包
在这里插入图片描述
  设置vs语言
在这里插入图片描述

2、更新PowerShell版本

  使用vcpkg时,PowerShell版本需要比较新,建议安装ps7以上的版本。右键【windows开始】打开Windows PowerShell, 输入 $PSVersionTable可以查看版本,如下图:
在这里插入图片描述

  我现在的版本是5.1,在使用vcpkg时,提示需要使用7.2版本。
  powershell release下载路径 https://github.com/PowerShell/PowerShell/releases
找到7.2下载
在这里插入图片描述

  安装结束后,powershell7会自动添加到系统path
在这里插入图片描述

  现在的版本

在这里插入图片描述

3、配置终端

  终端配置文件可以选择刚刚安装的PowerShell, 以后右键打开时就是7.2版本了。

4、clone vcpkg

  打开git bash,开始clone vcpkg, 命令:

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

  如果网络不好,可能无法clone, 需要有合理良好的网络环境。
vcpkag clone ok后,cd到vcpkg目录,执行脚本bootstrap-vcpkg.bat下载vcpkg.exe,如下图:
在这里插入图片描述

  执行结束之后在当前目录就可以看到vcpkg.exe, 如下图:

在这里插入图片描述

三、vcpkg具体使用

1、演示安装jsoncpp库

  将vcpkg.exe目录添加到系统path, 以后在任意目录都可以执行vcpkg.exe命令了,但是安装的文件依然是在vcpkg目录,安装第三方库的命令:

vcpkg install [name]

  比如安装jsoncpp库,输入以下命令进行安装

.\vcpkg install jsoncpp

  默认安装的是32位的,如下图

在这里插入图片描述

  首次安装时会比较慢,耐心等待。
  库的安装位置
在这里插入图片描述

2、指定位数安装

  指定版本安装前,先查找是否存在对应的版本,命令

.\vcpkg search 库的名字

  例如查找asdf库是否存在

在这里插入图片描述
  asdf这个库显然是没有的,下面看看ffmpeg是否有
在这里插入图片描述

  当然去官网也可以查看,在官网可以明确的知道支持哪些版本
在这里插入图片描述

  如果需要指定版本安装,比如安装64位jsoncpp的,命令如下:

./vcpkg install jsoncpp:x64-windows

  如下图
在这里插入图片描述

3、查找支持的系统架构

  如何查看版本位数呢,输入如下命令:

./vcpkg help triplet

  如下图
在这里插入图片描述

4、查看已经安装了哪些库

  命令

./vcpkg list

  输入 ./vcpkg list,如下图
在这里插入图片描述

5、如何卸载vcpkg

  直接删除目录即可

四、如何集成到visual studio

下面介绍如何把vcpkg集成到visual studio。

1、集成到Visual Studio全局

  集成到Visual Studio全局,此种情况所有项目都可以使用vcpkg的库,命令如下:

 .\vcpkg integrate install

2、移除全局集成

  移除全局集成只要执行下列命令即可:

 .\vcpkg integrate remove

3、集成到工程

 .\vcpkg integrate project

五、集成到CMake

  现在的Visual Studio已经支持CMake了,在cmake中集成只要在cmake文件中加入下面这句话即可。

-DCMAKE_TOOLCHAIN_FILE=<vcpkg_dir>/scripts/buildsystems/vcpkg.cmake"

六、如何使用vcpkg下载好的库

  建议还是copy到项目目录,去vcpkg的packages目录找到各个库的include, lib, dll, 注意lib目录默认是release版,debug的lib dll需要去debug目录拷贝.

  mac、linux也可以使用,按照官网的指引进行安装即可。


http://chatgpt.dhexx.cn/article/ftnEowhm.shtml

相关文章

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…

Unity脚本复习

1.在Project面板中显示和创建的每一个脚本其实都是一个类&#xff0c;当我们把脚本挂载到Hierarchy层级中的游戏物体时&#xff0c;其实我们就实现了将脚本类实例化为一个脚本组件&#xff08;对象&#xff09;的过程 2.在游戏运行时&#xff0c;场景加载&#xff0c;游戏对象…

零基础游戏开发笔记11——Unity脚本介绍、脚本初始阶段

1.语法结构&#xff1a; 2.编译过程&#xff1a; CLS->Mono RunTime->机器码 3.关于修改和创建脚本&#xff1a; 创建脚本&#xff1a; 一般我们会在项目中添加scripts文件夹&#xff0c;并在此文件夹中编写脚本&#xff0c;当然这些脚本可以根据个人喜好分配到不同类…

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

上一节&#xff0c;我们讲了基于公式明文的金手指制作方法&#xff0c;这一节&#xff0c;我们将进阶到更高级的基于程序修改的金手指制作方法&#xff0c;从现在开始&#xff0c;对读者的技术水平有了一个更高的要求&#xff0c;读者最好有汇编和C/C高级语言的一些基础&#x…

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

终于到最后一节了&#xff0c;在这一节中我们将讲解如何利用hack制作出丰富多彩的世界&#xff0c;开个玩笑&#xff0c;其实是因为由于暗黑三的AMIIBO功能很有意思&#xff0c;不但可以用普通手办在城外召唤出一组精英怪&#xff0c;而且在城内用专用哥布林手办还能开启宝藏秘…

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

上一节&#xff0c;我们学会了通过修改程序指令的方式制作金手指&#xff0c;这一节&#xff0c;将引出真正的高手级金手指开发方法 除了必掉太古这个极其护肝和有用的金手指外&#xff0c;我们能想到的另一个金手指就是人物背包里的素材&#xff0c;包括金钱&#xff0c;宝石…

暗黑破坏神2 符文自动合成--按键精灵源码

最近玩了一个暗黑破坏神mod服 发现2个符文可以合成一个大号符文.不过手动合成实在太费劲了.于是乎我就写了一个自动合成的脚本. 需要用到图灵插件,不知道的自己百度一下. 还是挺有意思的这类脚本.还需要有一个自己的算法. 源码如下. Function 移动鼠标点左键(x1, y1)MoveT…

Unity脚本(二)

视频教程&#xff1a;https://www.bilibili.com/video/BV12s411g7gU?p122 目录 Transform GameObject Object GetComponentInParent LookAt GetSiblingIndex、SetSiblingIndex Instantiate Transform 对象的位置、旋转和缩放 场景中的每个对象都有一个Transform&…

Unity 剧情类游戏基础脚本

本文主要用于给新人提供实现剧情类游戏的基本思路。 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; 然后是一个很重要的 [System.Serializable] 它的作用是使得在检查器窗口来看到我i们自己创建的类从而实现在检…

Unity脚本(三)

视频教程&#xff1a;https://www.bilibili.com/video/BV12s411g7gU?p128 目录 Time Prefab Animation Time Time.time&#xff1a;自应用程序启动以来&#xff0c;每帧的开始时间&#xff08;只读&#xff09; Time.deltaTime&#xff1a;每帧间隔&#xff0c;或说完…

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

最近重温了NS版的暗黑三&#xff0c;因为空闲时间实在有限&#xff0c;面对这样一款刷刷刷的经典作品&#xff0c;为了护肝以及更爽快的游玩&#xff0c;同时为了弥补自己丢失已久的汇编技能&#xff0c;加上NS版暗黑三最初版本里有带完整调试信息的elf文件&#xff0c;于是有了…

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

上一节&#xff0c;我们初步介绍了修改人物力量的方法&#xff0c;也大致说了一下hexworkshop和IDA的简单操作&#xff0c;这一节&#xff0c;我们将进阶到复杂度高一些的人物全属性修改&#xff0c;搜索方法基本跟上一节的力量公式一样&#xff0c;需要一定的耐心和细心&#…

Unity入门3——脚本基础

一、生命周期函数 ​ 所有继承 MonoBehavior 的脚本&#xff0c;最终都会挂载到 GameObject 游戏对象上 ​ 生命周期函数就是该脚本对象依附的 GameObject 对象从出生到消亡整个生命周期中 ​ 会通过反射自动调用的一些特殊函数 ​ Unity 帮助我们记录了一个 GameObject 对象依…

4.实现csdn暗黑模式-油猴脚本实战1

4.实现csdn暗黑模式-油猴脚本实战1 Start 前面的文章&#xff0c;对油猴脚本做了基础的介绍。今天来我们来实战一下&#xff0c;编写一个有实际作用的油猴脚本。 如果我希望我的csdn是暗黑模式&#xff0c;怎么办&#xff1f; 看我表演&#xff1f; 注意&#xff01;本文仅用…

6. unity之脚本

1. 说明 当整个游戏运行起来之后,我们无法再借助鼠标来控制物体,此时可以使用脚本来更改物体的各种姿态,驱动游戏的整体运动逻辑。 2. 脚本添加 首先在Assets目录中,新创建一个Scripts文件夹,在该文件内右键鼠标选择创建脚本选项,即可创建一个脚本文件,可命名为Sampl…

Unity入门03——Unity脚本

1.脚本基本规则 1.设置编程用工具 2.基本规则 1.创建规则 不在VS中创建脚本了可以放在Assets文件夹下的任何位置&#xff08;建议同一文件夹管理)类名和文件名必须一致,不然不能挂载(因为反射机制创建对象&#xff0c;会通过文件名去找Type)建议不要使用中文名命名没有特殊…