Visual Studio工具 vcpkg简介

article/2025/10/5 2:02:51

vcpkg是命令行包管理工具,在使用第三方库的c或c++开发中可以简化相关的配置操作。vcpkg安装的包支持Visual Studio 2015 update 3及以上版本,包括vs2017工具集,目前在windows平台已有超过900多个包,linux平台超过350个包。在默认情况下,vcpkg会优先使用vs2017进行编译。如果未安装,则使用vs2015编译和安装。使用vcpkg对于c或c++开发,令人烦恼的第三方包管理工作大大的减轻,实则是“居家旅行,必备之品”。

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

这个清单以后随着版本的迭代还会再增加。vcpkg不仅支持x86架构,还支持arm架构。注意:这里的arm架构特指类似于surface这种运行在arm处理器上的Win10平台,而并非我们传统意义上的Linux或android的ARM平台。

安装VCPKG

1

2

3

1. 先安装Git 和 cmake

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

3. 编译vcpkg: 执行Vcpkg工程目录下的“bootstrap-vcpkg.bat”命令,即可编译。编译好以后会在同级目录下生成vcpkg.exe文件。编译期间,脚本会自动下载vswhere组件。

注意点:

如果电脑中没有安装cmake 和 powershell,vcpkg会自动下载portable版本的cmake和powershell。但是由于各种原因,下载的网速很慢,所以建议先自行下载安装msi版本的cmakehe powershell。最好是下载最新版本的cmake或者到download目录看一下vcpkg下载的对应版本,之后手动安装或者把源文件压缩包放到download文件夹内。

常见指令

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

//查看Vcpkg支持的开源库列表

.\vcpkg.exe search

 

//安装库

.\vcpkg.exe install libname

 

安装过程分为如下过程

 

1.环境初始化

2.下载源代码(如果已经在cache中,则不下载)

3.校验文件有效性

4.解压缩源代码

5.利用配套工具配置源码工程,在这里是使用的是cmake(如果是ffmpeg,则用msys2)

7.编译源码。一般会同时编译Release和Debug版本。

8.把编译好的文件拷贝到相关目录中去(一般是installed目录)

 

注意点:

 

如果电脑中没有安装cmake,vcpkg会自动下载portable版本的cmake。但是由于各种原因,下载的网速很慢,所以建议先自行下载安装msi版本的cmake。最好是下载最新版本的cmake

 

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

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

.\vcpkg.exe help triplet

 

arm-uwp

arm-windows

arm64-uwp

arm64-windows

x64-uwp

x64-windows-static

x64-windows

x86-uwp

x86-windows-static

x86-windows

 

.\vcpkg.exe install libcurl:x64-windows

 

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

.\vcpkg.exe remove jsoncpp

 

这个时候只是移除了默认的x86-winodws版本的文件,如果有其他平台的版本需要移除,需要制定相应的triplet。

移除也只是移除了二进制程序库而已,源码包和解压缩的源码并没有删除

 

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

.\vcpkg.exe remove --outdated

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

//列出已经安装的开源库

.\vcpkg.exe list

 

//更新已经安装的开源库

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

 

//导出已经安装的开源库

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

.\vcpkg.exe export jsoncpp --7zip

 

注意,导出时必须指定导出的包格式。vcpkg支持5种导出包格式,有:

参数          格式

–raw            以不打包的目录格式导出

–nuget  以nuget包形式导出

–ifw            我也不知道这是啥格式

–zip            以zip压缩包形式导出

–7zip   以7z压缩包形式导出  

 

一般地,导出包的格式为: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       

    

1

2

/导入备份的开源库

.\vcpkg.exe import xxx.7z

Vcpkg和Visual Studio的集成

什么是集成?

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

集成到全局

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

1

.\vcpkg integrate install

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

4.3. 移除全局集成

1

.\vcpkg integrate remove

4.4. 集成到工程

上面已经可以集成到全局,为什么还要“集成到工程”呢?因为在大部分情况下,我们不希望集成到全局,毕竟有很多第三方库我们希望自定义处理一下,或者干脆不想集成第三方库。那么集成到工程是最灵活的处理方式。也是工程级项目推荐的处理方式。“集成到工程”是整个vcpkg中最复杂的一项,它需要利用Visual Studio 中的nuget插件来实现。我们接下来一步一步来说。

4.4.1. 生成配置

1

.\vcpkg integrate project

这时候会在“vcpkg_root\scripts\buildsystems”目录下,生成nuget配置文件.

4.4.2. 基本配置

打开Visual Studio,点击菜单“工具->NuGet包管理器->程序包管理器设置”,进入设置界面,点击“程序包源”。

点击“加号”增加一个源。修改源的名字为vcpkg。在“源”的选项中点击右侧的”…”选择vcpkg目录下的“scripts\buildsystems”目录,然后点击右侧的“更新按钮”。

点击“确定”,关闭设置对话框。

到此,全局性的设置已经完成,以后不必再重复设置了。

4.4.3. 工程配置

用Visual Studio 打开一个工程或解决方案。右键点击需要设置的工程,选择“管理NuGet程序包”。在右上角的“程序包源”中选择刚刚设置的“vcpkg”。这样在“浏览”选项卡中就可以看到“vcpkg.H.Repos.vcpkg”。点击最右侧的“安装”。这样就可以集成到某个工程了。

 

4.5. 集成到CMake

最新的Visual Studio 2015和2017大力支持CMake工程,所以对cmake的支持当然不能少。在cmake中集成只要在cmake文件中加入下面这句话即可。

1

-DCMAKE_TOOLCHAIN_FILE=/scripts/buildsystems/vcpkg.cmake”

其中是指vcpkg实际所在目录。

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

1

2

3

.\vcpkg install ompl:x64-windows

.\vcpkg install ompl:x86-windows

.\vcpkg install ompl:x86-windows-static

可以分别得到不同编译版本的库

4.6. 集成静态库

Vcpkg默认编译链接的是动态库,如果要链接静态库,目前还没有简便的方法。需要做如下操作

用文本方式打开vcxproj工程文件

2.在xml的段里面增加如下两句话即可

1

2

<VcpkgTriplet>x86-windows-static</VcpkgTriplet>

<VcpkgEnabled>true</VcpkgEnabled>

在CMake中集成静态库,需要额外指令

1

cmake .. -DCMAKE_TOOLCHAIN_FILE=.../vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x86-windows-static

5. 使用Vcpkg时的注意点

  • Vcpkg仅支持Visual Studio 2015 update 3及以上版本(包括Visual Studio 2017),究其原因,很可能和c++11的支持度以及集成原理有关系。
  • 目前Vcpkg编译静态库,默认只支持MT模式。

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

相关文章

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…

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…