【环境配置】C/C++第三方库管理工具vcpkg安装和使用

news2024/11/24 15:48:31

一,vcpkg简介

  • vcpkg是微软公司开发的一个开源C++包管理工具,它可以很方便的帮助您在 Windows、 Linux 和 MacOS 上下载,编译和安装C++ 第三方库。它具有自动解决依赖关系的能力,并且支持多种目标架构和平台。
  • 提供了超过1500个C++库的预编译二进制包,并且还提供了一组命令行工具,以帮助用户安装,卸载,升级和管理C++库的版本。

优点:

  1. 自动下载开源库源代码,轻松编译
  2. 源码包的缓存管理和版本管理,可以升级版本
  3. 依赖关系检查(比如编译libcurl,会自动下载zlib,openssl进行编译)

二,下载vcpkg

前置条件:

  • Git - Downloads 根据平台下载最新版本(傻瓜式安装)
  • Visual Studio 2015 或更新的版本(包含英文语言包
    • 点击VS界面菜单栏的工具->获取工具和功能,查看是否下载英文语言包
  • Windows 7 或更新的版本

step 1:git克隆 vcpkg 仓库

  • 在C盘路径下右击鼠标,点击 Git Bash Here 弹出命令窗口
  • 输入:git clone https://github.com/microsoft/vcpkg.git

step 2:生成vcpkg.exe

  •  执行vcpkg目录下的 bootstrap-vcpkg.bat 构建vcpkg

step 3:配置vcpkg的环境变量

  • vcpkg 命令表
vcpkg search [pat]

搜索要构建的可用包

vcpkg install <pkg>安装软件包
vcpkg remove <pkg>卸载安装包
vcpkg update列出可以更新的包
vcpkg remove --outdated卸载所有过时的软件包
vcpkg upgrade重新构建所有过时的软件包
vcpkg hash <file> [alg]通过特定算法对文件进行哈希,默认为SHA512
vcpkg help topics显示帮助主题列表
vcpkg help <topic>显示特定主题的帮助
vcpkg list列出已安装的软件包
vcpkg integrate install使已安装的包在用户范围内可用,需要管理第一次使用的特权
vcpkg integrate remove删除用户范围的集成
vcpkg integrate project为单个VS项目生成一个引用NuGet包使用
vcpkg integrate powershell

启用PowerShell选项卡完成

vcpkg export <pkg>... [opt]...导出一个包
vcpkg edit <pkg>

打开一个端口进行编辑(使用环境器程序,默认为“code”)

vcpkg create <pkg> <url> [archivename]创建一个新端口
vcpkg x-init-registry <path>初始化目录<path>中的注册表
vcpkg format-manifest --all格式化所有vcpkg,json文件,在提交到vcpkg之前运行这个命令
vcpkg owns <pat>

搜索安装包中的文件

vcpkg depend-info <pkg>...

显示端口的依赖项列表

vcpkg env为开发或编译创建一个干净的shell环境
vcpkg version

显示版本信息

vcpkg contact

显示联系人信息发送反馈

@response_file指定响应文件以提供附加参数
有关更多帮助(包括示例),请参阅附带的README。Md和docs文件夹

step 4:vcpkg安装第三方库

  • 安装32位(默认安装) 
    •  vcpkg install [package name]
  • 安装64位
    •  vcpkg install [package name]:x64-windows

  • 安装第三方库出现的问题
  • 解决方式:cmd窗口切换到vcpkg目录,运行git pull 命令以获取最新的vcpkg代码

  • 安装第三方库成功效果(libevent库)
  • 在vcpkg/packages目录下可以查看已安装的库

step 4:下载好的库集成到项目中

  • 命令:vcpkg integrate install
  • 执行后就可以让 VS 可以自动访问到[vcpkg-path]/installed下以安装的库,我们不需要另外去为项目配置库环境。
  • 在此之后,您可以创建一个非 CMake 项目 (或打开已有的项目)。在您的项目中,所有已安装的库均可立即使用 #include 包含您需使用的库的头文件且无需额外配置。

 

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

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

相关文章

【Ubuntu系统内核更新与卸载】

【Ubuntu系统内核更新与卸载】 1. 前言2. 内核安装2.1 系统更新2.2 官网下载 3. 内核卸载3.1 需求分析3.2 卸载方法 1. 前言 我们在搭建环境时常常遇到内核版本不匹配的问题&#xff0c;需要我们安装新的内核版本&#xff1b;有时又会遇到在安装软件时报错boot空间已满无法安装…

Python爬取影评并进行情感分析和数据可视化

Python爬取影评并进行情感分析和数据可视化 文章目录 Python爬取影评并进行情感分析和数据可视化一、引言二、使用requestsBeautifulSoup进行影评的爬取1、分析界面元素2、编写代码 三、情感分析1、数据预处理2、情感分析3、数据可视化 一、引言 前几天出了《航海王&#xff1…

N - Cthulhu

第三次题组 [Cloned] - Virtual Judge (vjudge.net) 【题目描述】 一个具有 n 个顶点和 m 条边的无向图。现在&#xff0c;世界上最好的头脑即将确定这张图是否可以被视为克苏鲁。 为了简单起见&#xff0c;让我们假设克苏鲁从空间里看起来就像一个附有触手的球形身体。从形式…

sqlserver存储过程中使用临时表的问题

2023年6月6日08:52:15 因为最近接触的his系统一些存储过程做数据统计&#xff0c;一个存储过程就要使用1-3个临时表&#xff0c;这些存储过程是零几年的写得&#xff0c;和我们这个时代的写的存储过程习惯不太一样&#xff0c;就好奇为什么要使用这么多的临时表 临时表的基本概…

结构型设计模式05-组合模式

&#x1f9d1;‍&#x1f4bb;作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 组合模式 1、组合模式介绍 组合模式&#xff08;Composite Pattern&#xff09;&#xff0c;又叫部分…

Generator-Evaluator重排模型在淘宝流式场景的实践

除了相关性&#xff0c;复杂信息流推荐场景还需要兼顾多样的业务需求&#xff0c;包括打散&#xff08;多样性&#xff09;&#xff0c;流量调控&#xff0c;多展示形态/多路供给融合等。传统推荐系统采用pipeline的形式&#xff0c;分步处理上述需求&#xff0c;缺少统筹优化&…

【博客650】irate适用于绘制细粒度灵敏图,但警惕用于告警

irate适用于绘制细粒度灵敏图&#xff0c;但警惕用于告警 1、irate解析 作用&#xff1a; irate(v range-vector) 函数用于计算区间向量的增长率&#xff0c;但是其反应出的是瞬时增长率。 原理&#xff1a; irate 函数是通过区间向量中最后两个两本数据来计算区间向量的增长…

C++表达式模板教程:从原理到应用的全面解析

C表达式模板教程 1. C表达式模板的引入 (Introduction to C Expression Templates)1.1 表达式模板的定义和作用 (Definition and Role of Expression Templates)1.2 表达式模板的历史和发展 (History and Development of Expression Templates)1.3 表达式模板在现代C中的地位 (…

java springboot VUE 在线学习平台系统开发mysql数据库web结构java编程计算机网页源码maven项目前后端分离

一、源码特点 springboot VUE 在线学习平台系统是一套完善的完整信息管理类型系统 前后端分离&#xff0c;结合springboot框架和VUE完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架 &#xff08;MVC模式开发&#xff09;&#xff0c;系统具有…

005Mybatis返回值(ResultMap 一对多,多对多)

属性 id 应该总是指定一个或多个可以唯一标识结果的属性。 虽然&#xff0c;即使不指定这个属性&#xff0c;MyBatis 仍然可以工作&#xff0c;但是会产生严重的性能问题。 只需要指定可以唯一标识结果的最少属性。显然&#xff0c;你可以选择主键&#xff08;复合主键也可以…

DevOps系列文章之 远程部署的一种方案

远程部署的一种方案 sshpass 一个简单、轻量级命令行工具&#xff0c;提供非交互式密码验证 原理 ssh 直接使用 TTY 访问&#xff0c;以确保密码是用户键盘输入的。 sshpass 在专门的 tty 中运行 ssh&#xff0c;以误导 ssh 相信它是从用户接收到的密码使用 sshpass 是不安…

深入理解HashMap源码

文章目录 HashMap简介源码分析关键参数获取数组下标put方法resize扩容过程jdk1.7的扩容实现jdk1.8的扩容实现 get()方法remove()方法 总结 关于HashMap&#xff0c;一直都是一个非常热门的话题&#xff0c;只要你出去面试&#xff0c;一定少不了它&#xff01; 本文主要结合 JD…

English Learning - L3 作业打卡 Lesson5 Day35 2023.6.8 周四

English Learning - L3 作业打卡 Lesson5 Day35 2023.6.8 周四 引言&#x1f349;句1: Publishers know that some people are self-conscious about what they read on public transport and so they put out different versions of a cover.成分划分弱读连读爆破语调 &#x…

实现表白墙

我们已经学习了Http以及Servlet类的相关知识 今天我们来实操一下,实现一个简单的既有前端又有后端的网站–表白墙 之前在学习前端的时候已经写过了表白墙的前端代码,存在两个问题 1.页面重启,数据丢失 2.数据只是在本地的,别人看不见 那么这样的问题我们要咋样解决呢? 引入…

黑马Redis视频教程高级篇(二:多级缓存)

目录 一、什么是多级缓存&#xff1f; 二、JVM进程缓存 2.1、导入案例 2.2、初识Caffeine 2.3、实现JVM进程缓存 2.3.1、需求 2.3.2、实现 三、Lua语法入门 3.1、初识Lua 3.2、HelloWord 3.3、变量和循环 3.3.1、Lua的数据类型 3.3.2、声明变量 3.3.3、循环 3.4…

Hadoop | 好用的脚本分享

知识目录 一、写在前面✨二、一键安装HA&#x1f36d;三、Hadoop一键启动&#x1f525;四、一键启动可视化工具&#x1f36d;五、结语&#x1f525; 一、写在前面✨ 大家好&#xff01;我是初心&#xff0c;希望我们一路走来能坚守初心&#xff01; &#x1f3e0; 个人主页&a…

2023版一线大厂Java面试八股文(最新版)1000+ 面试题附答案详解,最全面详细

Java 面试八股文有必要背吗&#xff1f; 我的回答是&#xff1a;很有必要。你可以讨厌这种模式&#xff0c;但你一定要去背&#xff0c;因为不背你就进不了大厂。现如今&#xff0c;Java 面试的本质就是八股文&#xff0c;把八股文面试题背好&#xff0c;面试才有可能表现好。…

Python爬虫之Scrapy框架系列(21)——重写媒体管道类实现保存图片名字自定义及多页爬取

目录&#xff1a; 重写框架自带媒体管道类部分方法实现保存图片名字的自定义&#xff1a;1.爬虫文件&#xff1a;2.items.py文件中设置特殊的字段名&#xff1a;3.settings.py文件中开启自建管道并设置文件存储路径&#xff1a;4.编写pipelines.py5.观察可发现完美实现&#xf…

JetBrains 激活方式的区别

文章目录 简介激活方式 简介 JetBrains 是一家全球知名的软件开发工具公司。 JetBrains 成立于 2000 年&#xff0c;总部位于捷克共和国的布拉格。该公司致力于为开发者提供高效、智能和创新的软件开发工具&#xff0c;以提升开发人员的生产力和开发体验。 JetBrains 的主要…

Redis的主从复制、哨兵机制、集群

一、主从复制 1、定义 主&#xff1a;master以写为主当master数据变化的时候从&#xff1a;slave以读为主自动将新的数据异步同步到其他slave数据库 2、作用 读写分离、容灾恢复、数据备份、水平扩容支撑高并发。 3、使用方式——配从不配主 权限配置&#xff1a;master如…