【vcpkg】vcpkg:用于 Windows、Linux 和 macOS 的 C++ 包管理器
官网:https://docs.microsoft.com/zh-cn/cpp/build/vcpkg?view=msvc-160&viewFallbackFrom=vs-2019
vcpkg
vcpkg 是用于 C++ 的一种命令行包管理器。 它极大地简化了 Windows、Linux 和 macOS 上第三方库的购置与安装。 如果项目要使用第三方库,建议通过 vcpkg 来安装它们。
对于 Windows 目录中的库,vcpkg 会下载源,使用可以找到的最新版 Visual Studio 编译这些源代码。对于使用特定编译器版本的标准化团队而言,可让一位成员使用 vcpkg 下载源并编译一组二进制文件。 他们随后可以使用导出命令将二进制文件和标头进行压缩打包,从而与其他团队成员共享。
安装
从 GitHub 克隆 vcpkg 存储库:https://github.com/Microsoft/vcpkg。 可凭喜好下载到任意文件夹位置。 此位置的根是 vcpkg。 下载完成后,在命令行界面切换到该目录。
在 vcpkg 根目录中,运行 vcpkg 引导程序:
bootstrap-vcpkg.bat
(Windows) #生成vcpk.exe
./bootstrap-vcpkg.sh
(Linux、macOS)
在 Linux 或 macOS 上,你可能需要在以下示例中使用 ./
作为 vcpkg 命令的前缀。 请记得从 vcpgg 根目录运行这些命令。
命令
搜索可用库列表 vcpkg search
,
筛选,例如 vcpkg search ta
:
在本地计算机上安装库 vcpkg install
vcpkg install boost
列出已安装的库
vcpkg list
与 Visual Studio (Windows) 集成
https://docs.microsoft.com/zh-cn/cpp/build/vcpkg?view=msvc-160&viewFallbackFrom=vs-2019
更多:https://docs.microsoft.com/zh-cn/cpp/build/vcpkg?view=msvc-160&viewFallbackFrom=vs-2019
实例
实例背景
最近用c++语言开发一个windows程序,发现一个神器vcpkg。这是微软开源到一个工具,通过这 个工具可以非常方便的下载到很多常用的开源库。并且把这些开源库非常简单的集成到我们自己程序中。
- 进入vcpkg项目,运行
bootstrap-vcpkg.bat
- 运行如下命令,把vcpkg整合到VS开发环境里
vcpkg integrate install
安装完毕
使用
如果我们程序开发要使用thrift库,只需要运行如下
vcpkg install thrift
默认是下载编译x86版本,如果要使用x64版本,则输入命令
vcpkg install thrift:x64-windows
如果要使用静态链接版本[1],则输入命令
vcpkg install thrift:x86-windows-static
vcpkg install thrift:x64-windows-static
这样在我们的代码中,就可以直接使用thrift这个库了。
参考文档
- [Vcpkg updates: Static linking is now available](https://blogs.msdn.microsoft.com/vcblog/2016/11 /01/vcpkg-updates-static-linking-is-now-available/)
链接:https://www.jianshu.com/p/d025f931b2e5
vcpkg使用过程中遇到的错误总结
原文:https://blog.csdn.net/qq_37996632/article/details/106532661
Downloading https://raw.githubusercontent.com/boostorg/boost/boost-1.73.0/LICENSE_1_0.txt... Failed. Status: 6;"Couldn't resolve host name"
解决方法:DNS被污染了,需要在hosts文件中加上github相关的真实ip地址
140.82.114.3 github.com
199.232.69.194 github.global.ssl.fastly.net
199.232.68.133 raw.githubusercontent.com
windows如何修改host:https://www.cnblogs.com/springlight/p/7102044.html
Failed. Status: 56;"Failure when receiving data from the peer"
解决方法:由于vcpkg下载的库或依赖基本上都是github上的,而github在国内访问的太慢了。可以用码云gitee把github上的项目先fork一下再导入,通过码云下载好,再放到vcpkg的目录的downloads文件夹中。
首先复制这个网址,复制到浏览器中,如果浏览器下载较快(挂了代理)那么就不需要用到gitee。如果浏览器也下不动就fork一下,再通过码云导入进去下载好。
要注意的是,大多数时候这个下载下来的文件和通过vcpkg下载下来的名称是不一样的,比如下图中的OSGeo-PROJ-6.3.1.tar.gz文件,实际上从github上下载下来时叫PROJ-6.3.1.tar.gz,需要添加一个前缀才能被vcpkg识别,还有的需要在版本号前面加上v,具体的命名视情况而定,多试几次就出来了。后面再vcpkg install的时候就可以识别出下载进去的缓存文件,vcpkg也就不再去连github了,直接用本地的缓存文件。
Could not locate a complete toolset. Please install the English language pack
解决方法:英语语言包缺失,在Visual Studio Installer中添加英语语言包
遇到下载失败
手动下载,然后放到vcpkg的vcpkg-master\downloads下,重新执行安装命令
【vcpkg】vcpkg:用于 Windows、Linux 和 macOS 的 C++ 包管理器相关推荐
- linux 解pac包打包工具,【译】5个对Linux新手来说最好的包管理器
inux中的包管理器可以说是非常重要,了解如何使用多种多样的包管理器可以大幅度地节省管理员的时间,因为从软件源下载/安装软件,升级,解决依赖问题,卸载软件......这些技能对于Linux系统管理员来 ...
- linux pacman安装目录,Arch包管理器pacman和yaourt简明用法
1.升级系统 pacman -Syu 2.升级系统,附带升级从aur安装的软件包 yaourt -Syu –aur 注:这条命令的确切意思是升级系统,从AUR升级本地软件数据库并安装更新. 3.安装包 ...
- 5 个给 Linux 新手的最佳包管理器
一个 Linux 新用户应该知道他或她的进步源自于对 Linux 发行版的使用,而 Linux 发行版有好几种,并以不同的方式管理软件包. 在 Linux 中,包管理器非常重要,知道如何使用多种包管理 ...
- linux桌面管理器未激活,聊聊linux桌面环境和包管理器
别人说我喜欢玩linux装逼,其实只是为了好玩,跑IDE和安卓模拟器流畅,仅此而已,这几天又玩了些东西,测试了大多数的linux发行版,了解了不少东西,对于种类多达290种linu发行版有了大概的了解 ...
- linux高级包管理工具,5 个给 Linux 新手的最佳包管理器
原标题:5 个给 Linux 新手的最佳包管理器 一个 Linux 新用户应该知道他或她的进步源自于对 Linux 发行版的使用,而 Linux 发行版有好几种,并以不同的方式管理软件包. 在 Lin ...
- linux更换包管理工具,技术|5 个给 Linux 新手的最佳包管理器
一个 Linux 新用户应该知道他或她的进步源自于对 Linux 发行版的使用,而 Linux 发行版有好几种,并以不同的方式管理软件包. 在 Linux 中,包管理器非常重要,知道如何使用多种包管理 ...
- 常见的linux包管理软件,5款最适合新手的包管理器
导读 在 Linux 中,包管理器非常重要,知道如何使用多种包管理器可以让你像一个高手一样活得很舒适,从在仓库下载软件.安装软件,到更新软件.处理依赖和删除软件是非常重要的,这也是Linux 系统管理 ...
- 基于Ventoy制作单个U盘引导Windows+Linux+黑苹果macOS
一款国内高手开发的一个名为Ventoy的开源多系统启动U盘制作工具,官方链接:https://www.ventoy.net/cn/index.html Ventoy 特点 不影响U盘日常普通使用 直接 ...
- linux c语言显示器api,API级别的Unicode GUI用于Windows / Linux / Mac的C语言本机应用程序...
API级Unicode GUI用于Windows / Linux / Mac OS X的C中的本机应用程序 . 我正在寻找一个简单的 Unicode , GUI , Native 应用程序,它可以在不 ...
最新文章
- CRM成功实施如何化繁为简
- pyqt5 qscrollarea到达_在PYQT5中QscrollArea(滚动条)的使用方法
- Dxperience 7.3.4 简体中文本地化
- QT每日一练day21:鼠标事件
- linux命令音乐视频合并,Linux下基于命令行的音乐播放器 (1)
- 一张图看懂SOA与微服务
- 【MIMO通信】基于matlab空时分组编码MIMO_OFDM通信系统仿真【含Matlab源码 663期】
- 精选了20个Python实战项目(附源码),拿走就用!
- pubmed显示服务器不稳定,你的pubmed又不能显示影响因子了,因为 ……
- Python-nmap 使用文档
- SQL Server建库建表命令
- 大陆人怎么去香港银行开户?
- 软件行业装机卖软件模式没落 转型SaaS服务趋势明显
- C语言教程(七):函数
- 【经典】synergy共享鼠标键盘/一套鼠标键盘操作多台电脑
- Node.js(二)
- 项目管理软件中有哪些技术风险?
- ESTIMATE包计算肿瘤纯度
- Dev-C++的下载和安装步骤 超级详细教程来喽!
- 蓝海创意云丨刺杀小说家:中国第一部大规模用虚拟拍摄的真人电影
热门文章
- mysql错误码为1045_mysql错误代码1045的原因及解决方案
- SUMPRODUCT函数详解
- Heritrix 拓展Heritrix
- ubuntu16.04安装破解matlab2016详细教程
- C# SuperSocket 手把手教你入门 傻瓜教程---3(Telnet服务器和客户端请求处理)
- 连接被远程服务器中断,Windows 2008远程桌面3389连接上后会被立即断开,并提示“远程桌面会话已结束”解决方案...
- JAVA删除文件或者文件夹工具类
- java 设计模式.pdf 免费下载
- Win7下实现 lpk.dll劫持游戏注入
- Matplotlib.pyplot 常用方法(一)