Win10+VS2019安装vcpkg

news2024/12/23 7:02:12

vcpkg是一个C++的包管理器。类似Python中的pip。安装后可以直接通过命令下载一些C++的包,省的自己编译配路径。安装后的包都被vcpkg统一保存,统一配置路径。VS中哪个项目需要,就将其配置到某个项目中,当然也可以全局配置。

1、下载vcpkg:
git clone https://github.com/microsoft/vcpkg
将vcpkg这级目录添加到环境变量
【我的目录】D:\13vcpkg\vcpkg

 

2、安装vcpkg:
运行bootstrap-vcpkg.bat
这一步就是会在线下载一个vcpkg.exe到目录
假如bat运行失败,可以手动到提示地址下载,放在vcpkg目录下即可

 

然后执行(base) PS D:\13vcpkg\vcpkg> .\vcpkg.exe integrate install

这时候可以查看一下支持的库列表
(base) PS D:\13vcpkg\vcpkg> .\vcpkg.exe search >支持列表.txt
目前2023年4月17日是有4500多个库

 

3、测试一下:

比如安装一个jsoncpp试试
(base) PS D:\13vcpkg\vcpkg> .\vcpkg.exe install jsoncpp
warning: Starting with the September 2023 release, the default triplet for vcpkg libraries will change from x86-windows to the detected host triplet (x64-windows). To resolve this message, add --triplet x86-windows to keep the same behavior.
Computing installation plan...
A suitable version of cmake was not found (required v3.25.1) Downloading portable cmake 3.25.1...
Downloading cmake...
https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-i386.zip->D:\13vcpkg\vcpkg\downloads\cmake-3.25.1-windows-i386.zip
Downloading https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-i386.zip

【注】这里会检查一些依赖项,缺少的话就会主动下载,但是可能会很慢,可以自己复制链接使用迅雷下载,然后把下载的文件放到vcpkg文件夹下的downloads文件夹下
这个文件夹是初始没有的,安装库的时候会自动创建

 

 

如果不指定安装的架构,vcpkg默认把开源库编译成x86的Windows版本的库。
那如果要安装编译某一个架构的开源库,我们该怎么写呢?我们只需要在需要安装的包后面指定相应的triplet即可。
例如我们需要编译64位版本的jsoncpp,那么执行如下命令即可。
.\vcpkg.exe install jsoncpp:x64-windows


(base) PS D:\13vcpkg\vcpkg> .\vcpkg.exe install jsoncpp
warning: Starting with the September 2023 release, 
the default triplet for vcpkg libraries will change from 
x86-windows to the detected host triplet (x64-windows). 
To resolve this message, add --triplet x86-windows to keep the same behavior.
这是一个警告信息,意思是从2023年9月的vcpkg版本开始,
默认的triplet(体系结构架构)将从x86-windows更改为检测到的主机triplet(x64-windows)。
这意味着如果您使用的是x86架构的计算机,您需要在使用vcpkg时添加一个额外的参数"--triplet x86-windows",
以保持与以前版本的兼容性,否则您可能会遇到一些兼容性问题。 

vcpkg是一个开源的C++库管理器,允许用户在Windows、Linux和macOS等平台上进行C++库的安装和管理。
triplet是一个用于指定平台、体系结构和编译器的组合参数,vcpkg使用它来下载和编译库。

4、移除安装包
移除一个已经安装(编译)的开源库
如果移除一个已经安装的开源库,那么执行remove指令即可。比如我们要移除jsoncpp,那么执行命令:
.\vcpkg.exe remove jsoncpp
注意:
这个时候只是移除了默认的x86-winodws版本的文件,如果有其他平台的版本需要移除,需要制定相应的triplet。
移除也只是移除了二进制程序库而已,源码包和解压缩的源码并没有删除。


5、列出已经安装的开源库
执行list指令即可,例如:

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

.\vcpkg.exe export jsoncpp --7zip
注意,导出时必须指定导出的包格式。vcpkg支持5种导出包格式,有:

参数    格式
–raw    以不打包的目录格式导出
–nuget    以nuget包形式导出
–ifw    我也不知道这是啥格式
–zip    以zip压缩包形式导出
–7zip    以7z压缩包形式导出

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

7.2. 集成到全局【一般不会这样操作,不过也没关系,反正可以随时取消全局集成】
“集成到全局”适用于Visual Studio开发环境和msbuild命令行。执行命令:

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

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

 .\vcpkg integrate remove
 
【 .\vcpkg integrate install 这样操作之后,所有的VS项目中,在外部包含目录下都会有计算值,就是会被添加路径
这时候打开VS就已经被设置好了全局集成
但大多数时候我们并不想这样,而是哪个项目需要就添加到哪个项目
这时候可以移除全局集成,但是要把VS关闭重新打开,才会生效

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

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

7.4.1. 生成配置

执行命令

 .\vcpkg integrate project
这时候会在“<vcpkg_dir>\scripts”目录下,生成nuget配置文件.

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

 

7.4.2. 基本配置

打开Visual Studio,点击菜单“工具->NuGet包管理器->程序包管理器设置”,进入设置界面,点击“程序包源”。
 
点击“加号”增加一个源。修改源的名字为vcpkg。在“源”的选项中点击右侧的"…"选择vcpkg目录下的“scripts\buildsystems”目录,然后点击右侧的“更新按钮”。

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

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

 

7.4.3. 工程配置

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

 

主要参考:https://blog.csdn.net/whl0071/article/details/124347065

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node 04-http模块

HTTP 协议 概念 HTTP&#xff08;hypertext transport protocol&#xff09;协议&#xff1b;中文叫 超文本传输协议 是一种基于TCP/IP的应用层通信协议 这个协议详细规定了 浏览器 和 万维网 服务器 之间互相通信的规则 协议中主要规定了两个方面的内容: 客户端&#xff1…

Coovally再升级!基于CV大模型的智能标注解放你的双手

近日&#xff0c;随着SAM大模型的横空出世&#xff0c;“分割一切”成为可能&#xff0c;基于CV大模型的标注技术受到瞩目。 SAM分割示例 SAM大模型 Meta 在论文中发布了名为 Segment Anything Model (SAM)的新模型&#xff0c;“SAM 已经学会了关于物体的一般概念&#xff0c…

Hbase1.1:HBase官网、HBase定义、HBase结构、HBase依赖框架、HBase整合框架

这里写自定义目录标题 HBase官网HBase特点&#xff1a;大HBase定义HBase结构HBase依赖框架hadoop HBase整合框架PhoenixHive HBase官网 Hbase官网地址 HBase是Hadoop database&#xff0c;一个分布式、可扩展的大数据存储。 当您需要对大数据进行随机、实时读/写访问时&…

Activiti学习03

这里写目录标题 一、开发环境1.1 Java环境1.2 数据库1.3 开发工具 二、Activiti入门体验2.1 新建项目2.2 pom.xml文件2.3 activiti.cfg.xml文件2.4 添加日志配置文件 三、创建数据库3.1 创建数据库3.2 执行代码3.2.1 通过代码实现创建表格3.2.2 简化代码 四、绘制流程4.1 新建b…

香港金银业贸易场十大会员名单排行榜

在种类丰富全面的国际投资市场中&#xff0c;黄金拥有者良好的受众基础&#xff0c;黄金投资产品有着悠久的历史记录和蓬勃旺盛的生命力&#xff0c;数百年以来无数炒金者在黄金投资中实现了投资理财的梦想&#xff0c;但是在黄金投资的过程中&#xff0c;投资中需要面对无数考…

162.网络安全渗透测试—[Cobalt Strike系列]—[Veil免杀]

文章目录 1 Veil的使用2 生成有效载荷payload3 Veil免杀过程4 测试免杀 1 Veil的使用 &#xff08;1&#xff09;Veil主要用于生成&#xff1a;免杀payload &#xff08;2&#xff09;下载地址&#xff1a;https://github.com/Veil-Framework/Veil &#xff08;3&#xff09…

Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP)

Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP) 目录 Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP) 一、简单介绍 二、老版本 Unity Text 使用工具控件调整行间距 三、新版本 Unity Text…

mysql性能调优开篇介绍、错误代码总结(处理方法)和参数文件详解(持续更新中ing)

前言 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关系…

园区路线地图指引图怎么画?园区地图三维图怎么画?

目前在园区信息化应用形式中&#xff0c;广泛缺乏专业电子地图的使用&#xff0c;因此&#xff0c;使这种高效的信息化工具的应用受到了很大限制。有些仅以图片代替&#xff0c;但图片没有空间计算、检索、路径设计的能力&#xff0c;在地图应用形式中&#xff0c;使用价值很低…

一文!解决恒定磁场的基本方程(有介质)

目录 引言 磁化过程 磁偶极矩 磁化强度 方程的化简 磁场强度 磁化率 磁导率 相对磁导率 现实生活中的应用 引言 为什么介质在磁场中会被磁化呢? 首先因为电子绕着原子核转动&#xff0c;所以就可以形成一个环形电流&#xff0c;&#xff0c;环形电流就可以产生磁场。…

SAR型ADC结构原理

SAR型 ADC&#xff0c;即逐次渐进逼近型 ADC&#xff0c;采用的是多次比较的方式来获得最终的输出结果&#xff0c;具有简单易用&#xff0c;功耗低的特点。下图这个结构可以帮助我们容易地理解SAR型 ADC的工作过程&#xff1a; 如上图&#xff0c;假设输入信号的伪代码为 45&…

YOLOv5+单目测距(python)

YOLOv5单目测距&#xff08;python&#xff09; 1. 相关配置2. 测距原理3. 相机标定3.1&#xff1a;标定方法13.2&#xff1a;标定方法2 4. 相机测距4.1 测距添加4.2 细节修改&#xff08;可忽略&#xff09;4.3 主代码 5. 实验效果 相关链接 1. YOLOV7 单目测距&#xff08;p…

今晚直播 | 思码逸陆春蕊:面对研发效能度量落地难点,如何让数据说话?

本期分享 本期 DevData Talks 邀请到了思码逸高级咨询专家陆春蕊老师。陆春蕊老师曾就职于 Oracle 美国&#xff0c;在软件质量、项目管理方面有着丰富的经验。在研发效能领域为上百家客户提供了技术、数据分析、实践落地等方面的咨询&#xff0c;协助客户提升研发效能10%-30%…

Revit问题:墙体被楼板剪切及材质库被锁定问题

一、Revit 墙体被楼板剪切怎么办? 建模的时候画的墙总是到楼板就停了&#xff0c;这是为什么&#xff1f;明明顶部约束到标高2了&#xff0c;这种情况如何解决&#xff1f; 首先来分析问题产生的原因是&#xff0c;我们在绘制楼板的时候选择了用楼板剪切重复部分的墙体。 解决…

junit的基本使用

1 依赖引入&#xff1a; 只需要在maven项目中引入&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency> 2 常用注解 Test Before after BeforeClass…

BUG——DM -3217: 第1 行附近出现错误: 列[***]未编制全文索引或全文索引数据错误(全文索引、是否包含某些字符串)

文章目录 一、情景二、报错三、解决四、说明1、CONTAINS的使用前景2、全文索引2.1.全文索引定义语句2.2.全文索引修改语句2.3.全文索引删除语句 一、情景 统计某字段中&#xff0c;包含某些字符串的行数 # 使用CONTAINS select sum(case when CONTAINS(my_column,123) then 1…

12种优雅的接口优化方案

12种优雅的接口优化方案 一、背景二、接口优化方案总结1.批处理2.异步处理3.空间换时间4.预处理5.池化思想6.串行改并行7.索引8.避免大事务9.优化程序结构10.深分页问题11.SQL优化12.锁粒度避免过粗欲速则不达,欲达则欲速! —— 佚名 一、背景 针对老项目,做了许多降本增效…

4、Symbol-ES6新基础类型

symbol是 ES6 新增的一种基本数据类型&#xff0c;它和 number、string、boolean、undefined 和 null 是同类型的&#xff0c;object 是引用类型。它用来表示独一无二的值&#xff0c;通过 Symbol 函数生成。 本小节代码都是纯JavaScript代码&#xff0c;建议在非TypeScript环境…

Rasa实现百度UNIT智能客服教学机器人

背景 上一篇文章提到了百度UNIT智能客服教学机器人&#xff0c;下面用Rasa实现同样的效果。环境如下 Rasa Version : 3.1.0 Minimum Compatible Version: 3.0.0 Rasa SDK Version : 3.1.1 Rasa X Version : 1.1.0 Python Version : …

【LeetCode: 354. 俄罗斯套娃信封问题 | 暴力递归=>记忆化搜索=>动态规划+二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…