vcpkg下载及安装

文章目录

  • vcpkg是什么
  • vcpkg的优势
  • Windows环境下的下载及安装
    • 1.下载
  • Linux环境下的下载及安装
  • 常用命令介绍
    • 1.1.1 设置默认安装的平台
    • 1.1.2可选步骤,将vcpkg与Visual Studio配合使用(需要管理员权限)
    • 1.1.3 软件包升级
    • 1.1.4 查找安装软件包
    • 1.1.5 安装软件包
    • 1.1.6 移除软件包
    • 1.1.7 列出已安装的软件包
    • 1.1.8 集成到CMake
    • 1.1.9 为vcpkg瘦身
    • 1.1.9 其它
      • 1.1.9.1 windows
      • 1.1.9.2 linux

vcpkg是什么

vcpkg是微软 C++ 团队开发的适用于 C 和 C++ 库的跨平台开源软件包管理器,它大大简化了 Windows、Linux 和 macOS 上第三方库相关的下载和配置操作,目前已有超过1600个第三方库可以通过vcpkg来安装。类似于 apt-get、npm 、yum 等的命令功能。

vcpkg的优势

1.自动下载三方开源库源代码。
2.一键安装第三方库。
3.源码包的缓存管理和版本管理,可以依需求安装指定的版本。
4.自动检查库的依赖关系并安装其依赖项。
5.无缝集成Visual Studio,不用手动设置任何的库相关的路径。
6.Visual Studio全平台支持,不仅支持Debug/Release、x86/x64编译,还支持UWP、ARM平台的编译。

Windows环境下的下载及安装

1.下载

	dos命令窗口下
	进入 D:\software目录
	D:\software>git clone https://github.com/microsoft/vcpkg  
	待克隆下载完毕后,会在software目录下生成一个vcpkg目录。
	D:\software>.\vcpkg\bootstrap-vcpkg.bat

此时有可能会报下面这个问题: 在这里插入图片描述
根据提示应该就是连接不到指定github服务器(这个是国外的服务器)。其实里面就是一个从远端下载vcpkg.exe的文件的操作。可以手动通过其他方式把它下载下来。然后放到D:\software\vcpkg根目录下。
我这里采用的是:通过华为云服务器(访问国外的网效果好些)来下载:
[root@iZ2zedddZ software]# wget https://github.com/microsoft/vcpkg-tool/releases/download/2023-12-12/vcpkg.exe
回车完后,等待下载完毕!会在当前目录下有一个vcpkg.exe文件
[root@iZ2zeddfx87fw4m4dlxu8dZ software]# ll -h
total 7.8M
-rw-r–r-- 1 root root 7.8M Dec 13 03:39 vcpkg.exe
将这个vcpkg.exe文件拷贝到Windows机器上下的,D:\software\vcpkg根目录下(上面有说明)。
配置系统环境变量:将D:\software\vcpkg添加到PATH环境变量下。
在这里插入图片描述
任意一个目录下:执行 vcpkg --version,如果打印有版本信息说明系统环境变量已配好。
在这里插入图片描述

Linux环境下的下载及安装

和上面差不多,就是执行脚本:.\vcpkg\bootstrap-vcpkg.bat 改为 .\vcpkg\bootstrap-vcpkg.sh。

常用命令介绍

1.1.1 设置默认安装的平台

–triplet=x64-windows表示仅在windows上安装64位软件包

vcpkg help triplet #查看软件包支持的平台

现代软件基本上64位编译的,为节约磁盘空间,可以为–triplet设置系统环境变量“VCPKG_DEFAULT_TRIPLET=x64-windows”,表示默认安装在windows上安装64位软件包。

1.1.2可选步骤,将vcpkg与Visual Studio配合使用(需要管理员权限)

vcpkg integrate install #安装至Visual Studio
vcpkg integrate remove  #从Visual Studio卸载

1.1.3 软件包升级

cd D:\software\vcpkg
git pull
vcpkg update
vcpkg upgrade --no-dry-run

1.1.4 查找安装软件包

vcpkg search PackageName

1.1.5 安装软件包

vcpkg install PackageName  --triplet=x64-windows

#如果你设置了VCPKG_DEFAULT_TRIPLET系统环境变量则
vcpkg install PackageName

1.1.6 移除软件包

vcpkg remove PackageName

移除所有过时的软件包

vcpkg remove --outdated

1.1.7 列出已安装的软件包

vcpkg list

1.1.8 集成到CMake

在cmake后添加CMAKE_TOOLCHAIN_FILE变量,值为vcpkg.cmake完整路径

cmake -DCMAKE_TOOLCHAIN_FILE=D:\software\vcpkg\scripts\buildsystems\vcpkg.cmake -Wno-dev
#-Wno-dev:【可选】抑制开发人员警告。 禁止对CMakeLists.txt文件的作者发出警告。

1.1.9 为vcpkg瘦身

当你使用了段时间后,vcpkg占用了非常大的磁盘空间,这时您可以通过删除packages、buildtrees和downloads文件夹来节省一些磁盘空间。

rmdir /S /Q D:\software\vcpkg\packages
rmdir /S /Q D:\software\vcpkg\buildtrees
rmdir /S /Q D:\software\vcpkg\downloads

vcpkg目录说明

buildtrees: 【允许删除】编译软件包使用的目录
docs:       【不能修改删除】文档和示例
downloads:  【允许删除】所有已下载的工具或源的缓存副本。 运行安装命令时,vcpkg 会首先搜索此处,如果没有会自动下载
installed:  软件包编译后的安装目录,头文件(h/hpp)、库文件(lib/so/a)、二进制文件(dll/exe)。集成Visual Studio后,vs会自动链接到此目录,你只需要引用头文件即可。vs自动引用库文件(编译后vs会自动将库文件(dll/so/a)复制项目运行目录)。
installed\x64-windows\debug:表示此目录中的库文件(lib/so/a)、二进制文件(dll/exe)都是debug模式
installed\x64-windows\lib\manual-link:表示此目录中的库文件(lib/so/a)不会自动引用,需要你在项目中手动设置
packages:   【允许删除】在不同的软件包之间用于暂存的内部文件夹
ports:      【不能修改删除】用于描述每个库的目录、版本和下载位置的文件。 如有需要,可添加自己的端口
scripts:    【不能修改删除】由 vcpkg 使用的脚本(CMake、PowerShell)
toolsrc:    【不能修改删除】vcpkg和相关组件的 C++ 源代码
triplets:   【不能修改删除】包含每个受支持目标平台(如 x86-windows 或 x64-uwp)的设置
*.*         其它文件都不允许手动修改

1.1.9 其它

因为vcpkg太过于自动化了,当开发完成后我们可能不知道使用项目依赖的软件包,我们可以通过下列命令查看:

1.1.9.1 windows

从开始菜单输入 ”x64 Native Tools Command Prompt for VS 2019”中运行(前提是已安装 Visual Studio 2019)

dumpbin /DEPENDENTS PackageName.dll
或者
dumpbin /DEPENDENTS PackageName.exe

演示:
在这里插入图片描述
双击打开上述应用
在这里插入图片描述
如下:使用Windows上的dumpbin 命令不能用于.so库文件上。
在这里插入图片描述

1.1.9.2 linux

ldd PackageName.so
ldd PackageName.a
ldd PackageName

演示

[root@iZ2zeddu8dZ local]# ldd libSignServerExJNI.so
	linux-vdso.so.1 =>  (0x00007fff343ee000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f81e9942000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f81e9640000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f81e942a000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f81e905c000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f81ea14a000)
[root@iZ2zeddu8dZ local]# ldd SignServerExJNI.dll 
	not a dynamic executable #说明ldd命令不能用在dll文件上

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【电子取证:FTK IMAGER 篇】DD、E01系统镜像动态仿真

​ 文章目录 【电子取证:FTK Imager 篇】DD、E01系统镜像动态仿真一、DD、E01系统镜像动态仿真 (一)使用到的软件 1、FTK Imager (v4.5.0.3)2、VMware Workstation 15 Pro (v15.5.2)(二)FTK Imager 挂载镜像 1、选择 …

Dual-MVSNet/DMVSNet论文精读

本文是Constraining Depth Map Geometry for Multi-View Stereo: A Dual-Depth Approach with Saddle-shaped Depth Cells的阅读记录 1. 问题引入 使用基于学习的多视点立体(MVS)技术重建场景涉及两个阶段:深度预测[【主要在于优化此过程】和…

大数据企业如何使用IP代理进行数据抓取

目录 一、引言 二、IP代理概述 三、为什么大数据企业需要使用IP代理 四、使用IP代理进行数据抓取的步骤 1、获取可用的代理IP 2、配置代理IP 3、设置请求头部信息 4、开始数据抓取 5、错误处理和重试 五、IP代理的注意事项 六、总结 一、引言 随着互联网的快速发展…

flex布局,flex-direction, justify content, align-content

目录 flex-direction justify content&#xff1a; flex-wrap align-items align-content flex-flow flex:1 align-self order属性定义项目排列顺序 已知html文件为&#xff1a; <div class"given"><span>1</span><span>2</span…

Axure元件的介绍使用以及登录界面

一、Axure元件介绍 简介&#xff1a; Axure元件是一种功能强大的设计工具&#xff0c;专门用于用户体验设计和交互设计。它可以帮助设计师创建可交互的原型&#xff0c;并实现各种界面元素的设计和布局。 Axure元件的基本特点包括&#xff1a; 多样性&#xff1a;Axure元件包括…

鸿蒙应用开发(二)环境搭建

开发流程 IDE下载 首先下载HUAWEI DevEco Studio&#xff0c;介绍首次启动DevEco Studio的配置向导&#xff1a; 运行已安装的DevEco Studio&#xff0c;首次使用&#xff0c;请选择Do not import settings&#xff0c;单击OK。安装Node.js与ohpm。node.js 是基于 V8 引擎构…

云渲染怎么提升效果图的画质?云渲染对效果图未来影响

在当今高速发展的视觉设计行业中&#xff0c;高质量的效果图不仅是展示设计成果的重要手段&#xff0c;也是设计沟通和营销的关键。无论是建筑设计、室内设计还是工业样品的视觉化&#xff0c;效果图的精细程度与渲染速度对项目的成功至关重要。对于许多追求卓越和效率的设计师…

数据库是否部署在 Docker 容器里,在这里你能找到答案

前言 近2年Docker非常的火热&#xff0c;各位开发者恨不得把所有的应用、软件都部署在Docker容器中&#xff0c;但是您确定也要把数据库也部署的容器中吗&#xff1f; 这个问题不是子虚乌有&#xff0c;因为在网上能够找到很多各种操作手册和视频教程&#xff0c;小编整理了一…

Antv/G2 折线图 DataSet 数据处理过滤指定字段

DataSet 文档 G2 3.2 DataSet 文档 Demo&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><m…

【力扣】2.两数相加

2.两数相加 这是第二题&#xff0c;还行豁~。 题解&#xff1a; 首先就是对题目的理解。这里你要知道两链表中数字的排列都是逆序的&#xff0c;也就是说示例一中2-4-3他原本的数字应该是342。同理可得下面链表的意思&#xff0c;二者相加所得到的结果也是逆序的&#xff0c;…

springcloud微服务篇--3.注册中心Eureka

一、注册中心Eureka 1.RestTemplate通过注册中心调用 通过springcloud微服务篇--2&#xff0c;RestTemplate的http调用方式引出问题&#xff1a; 服务消费者该如何获取服务提供者的地址信息&#xff1f; 如果有多个服务提供者&#xff0c;消费者该如何选择&#xff1f; 消费者…

HAAS 哈斯机床 读写刀补数据

哈斯机床不管是串口机床还是网口机床 都提供了Q命令 可以使用Q命令 进行刀具补偿的读取和写入 最多支持200把刀的 读取和写入

stu06-VSCode里的常用快捷键

Alt Z&#xff1a;文字自动换行。当一行的文字太长时&#xff0c;可以使用。或者查看→自动换行Alt Shift ↓ &#xff1a;快速复制当前行到下一行Alt Shift ↑ &#xff1a;快速复制当前行到上一行Alt B&#xff1a;在默认浏览器中打开当前.html文件Ctrl Enter&#xf…

云计算在计算机领域的应用与发展

云计算在计算机领域的应用与发展 一、引言 随着科技的不断发展&#xff0c;计算机领域已经成为当今社会最为活跃和创新的领域之一。云计算作为一种新兴的计算模式&#xff0c;已经在计算机领域中得到了广泛的应用&#xff0c;并且正在不断地推动着计算机领域的发展。本文将探…

用友时空 KSOA 多处SQL注入漏洞复现

0x01 产品简介 用友时空 KSOA 是建立在 SOA 理念指导下研发的新一代产品,是根据流通企业前沿的 IT 需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的 IT 系统之间彼此轻松对话。 0x02 漏洞概述 用友时空 KSOA 系统 PayBill、QueryService、linkadd.jsp等接口处…

六:Day05_Spring Security01

一、Spring Security引入 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制&#xff08;认证和授权&#xff09;框架。它是保护基于 Spring 应用程序的事实标准。 2. 认证授权 认证授权实现平台所有用户的身份认证与用户授权功能。 2.1 什么是用户认证 认证…

HarmonyOS、ArkTS 备忘录(持续更新中)

Component 、Builder Component封装大的组件Builder自定义构建函数&#xff0c;可以理解为 构建页面的函数&#xff1b;Builder插槽多点&#xff0c;封装一些小的模块 组件状态管理 像素单位 export default 和 export之间的区别

Github 2023-12-14 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2023-12-14统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量非开发语言项目5TypeScript项目2JavaScript项目1Jupyter Notebook项目1PHP项目1 基于项目的学习 创建周期&a…

企业计算机服务器中了halo勒索病毒怎么解密,勒索病毒解密数据恢复

在网络技术飞速发展的今天&#xff0c;越来越多的企业开始意识到企业数据安全的重要性&#xff0c;很多企业都会依赖数字化办公系统软件&#xff0c;并且通过系统软件将企业的重要数据存储在数据库中&#xff0c;为企业的生产运营提供了极大便利&#xff0c;但网络威胁一直存在…

探索云测试的方法:优化软件质量的新趋势

随着云计算技术的不断发展&#xff0c;云测试成为提高软件质量和效率的关键方法之一。本文将介绍一些云测试的方法&#xff0c;以帮助团队更好地应对不同的测试需求和挑战。 1. 云测试环境搭建 传统测试中&#xff0c;搭建测试环境可能需要大量的时间和资源。云测试通过提供可扩…