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.solinux-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文件上

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

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

相关文章

LLM(六)| Gemini:谷歌Gemini Pro 开放API ,Gemini Pro 可免费使用

近期,Google Gemini Pro 开放API 了,且Gemini Pro 可免费使用!Gemini Pro支持全球180个国家的38种语言,目前接受文本作为输入并生成文本作为输出。 Gemini API 地址:http://ai.google.dev Gemini Pro 的表现超越了其他…

抖音直播互动答题问答猜图猜成语图汉字找茬找不同微信字节流量主小程序开发

抖音直播互动答题问答猜图猜成语图汉字找茬找不同微信字节流量主小程序开发 抖音直播互动答题:在抖音直播中,主播可以进行答题活动,观众可以通过答题参与互动。主播会提出问题,观众在规定时间内发送答案,主播根据正确率…

我常用的几个经典Python模块

Python常用的模块非常多,主要分为内置模块和第三方模块两大类,且不同模块应用场景不同又可以分为文本类、数据结构类、数学运算类、文件系统类、爬虫类、网络通讯类等多个类型。 大家常用的内置模块比如:math、re、datetime、urllib、os、ra…

使用Python处理Excel中一对多匹配关系

import pandas as pddf pd.read_excel(rC:\Users\wangkejun\Desktop\1.xls)# 提取一一对应的数据 sku_list [] channel_list []for sku, channel in zip(df[XXX], df[XXXX]):if pd.isna(channel): # 判断是否为缺失值continue # 是缺失值则跳过该行数据if , in str(sku): …

中伟视界:煤矿行业借力人工智能,防控灾害风险迈出新步伐 《“十四五”矿山安全生产规划》(应急(2022)64号),煤矿重大灾害风险防控系统

随着煤矿行业的发展,煤矿重大灾害风险防控成为了行业关注的重点之一。为了更好地预防和应对灾害风险,煤矿行业开始引入人工智能分析算法和检测场景,以提高灾害风险的识别和预警能力。 在煤矿的重大灾害风险防控中,AI算法发挥着重要…

多条件三元表达式如何写?

在某些业务需求情况下,如何书写多条件三元表达式?(例如,父组件传值给子组件,子组件根据不同的值去响应不同的颜色变化该如何实现?) 父组件: 父组件传testData的值给子组件&#xff…

IDEA调整内存大小

一、IDEA开启内存显示 双击shift,搜索show memory indicator 打开后重启,右下角显示IDEA内存占用情况 开启后右下角会显示 二、调整内存 双击shift,搜索vmoption 修改-Xms和-Xmx参数,如下: -Xms:最小内存 -Xmx:最大内存 设置完成后&…

阅读代码的记录

1-utils_metrics.py用在train.py中做指标衡量,现在想在推理(predict.py)的时候衡量一下指标 2-调研眼睛部位的单独分割。 https://blog.csdn.net/qq_40234695/article/details/88633094 衡量图像语义分割准确率主要有三种方法: …

js 实现图片上传

<style>.showFile{width: 200px;height: 200px;border: 1px solid blue;}.showFile img{width: 100px;height: 100px;} </style> <div><input type"file" id"file" multiple><!--展示所上传的文件--><div class"sho…

鸿蒙原生应用/元服务开发-Stage模型能力接口(五)

说明 Common模块将二级模块API组织在一起方便开发者进行导出。本模块首批接口从API version 9开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。本模块接口仅可在Stage模型下使用 二、 导入模块 import common from ohos.app.ability.common; 三、 …

系列五、DQL

一、DQL 1.1、概述 DQL的英文全称为&#xff1a;Data Query Language&#xff0c;中文意思为&#xff1a;数据查询语言&#xff0c;用大白话讲就是查询数据。对于大多数系统来说&#xff0c;查询操作的频次是要远高于增删改的&#xff0c;当我们去访问企业官网、电商网站&…

LeetCode刷题--- 二叉树的所有路径

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 【 http://t.csdnimg.cn/yUl2I 】 【C】 【 http://t.csdnimg.cn/6AbpV 】 数据结构与算法 【 http://t.csdnimg.cn/hKh2l 】 前言&…

Java架构师-数据机构与算法实战(第一篇)

数学知识回顾 指数 指数函数是重要的基本初等函数之一。一般地&#xff0c;ya^x函数(a为常数且以a>0&#xff0c;a≠1)叫做指数函数&#xff0c;函数的定义域是 R 。注意&#xff0c;在指数函数的定义表达式中&#xff0c;在a^x前的系数必须是数1&#xff0c;自变量x必须在…

车载测试包括哪些测试

车载测试包括CW测试和现网测试。以下是相关介绍&#xff1a; CW测试&#xff1a; 即在典型区域架设发射天线&#xff0c;发射单载被信号&#xff0c;然后在预先设定的路线上进行车载测试&#xff0c;使用车载接收机接收并记录各处的信号场强。CW测试频率和环境选择方便&#…

如何拍摄超级大像素图片,超级大像素有哪些应用

引言&#xff1a; 在数字摄影领域&#xff0c;超级大像素照片是指通过高像素的相机或拼接多张照片合成的照片。这样的照片具有更高的分辨率&#xff0c;细节更加清晰&#xff0c;绘画质感更强。那么如何拍摄超级大像素照片&#xff0c;超级大像素可以用在哪些领域呢。 一&…

如何做到人均告警减少 90%?B 站新一代告警平台的设计与实践

一分钟精华速览 B 站的业务规模和用户群体不断扩大&#xff0c;对于服务的稳定性和可用性的要求也日益增高。这就需要 B 站的监控告警系统能够及时、准确地发现和定位问题&#xff0c;以便尽快解决&#xff0c;维护好用户的使用体验。 本文是对 B 站在告警监控系统上的一次重…

小红书可观测 Metrics 架构演进,如何实现数十倍性能提升?

在当前云原生时代&#xff0c;随着微服务架构的广泛应用&#xff0c;云原生可观测性概念被广泛讨论。可观测技术建设&#xff0c;将有助于跟踪、了解和诊断生产环境问题&#xff0c;辅助开发和运维人员快速发现、定位和解决问题&#xff0c;支撑风险追溯、经验沉淀、故障预警&a…

MATLAB图解傅里叶变换(初学者也可以理解)

1、概述 相信很多人对于傅里叶变换可能觉得比较复杂和有点难懂&#xff0c;其实不难&#xff0c;它只是一种积分变换。 傅里叶变换&#xff0c;表示能将满足一定条件的某个函数表示成三角函数&#xff08;正弦和/或余弦函数&#xff09;或者它们的积分的线性组合。也就是说&qu…

『 Linux 』进程地址空间概念

文章目录 &#x1fad9; 前言&#x1fad9; 进程地址空间是什么&#x1fad9; 写时拷贝&#x1fad9; 可执行程序中的虚拟地址&#x1fad9; 物理地址分布方式 &#x1fad9; 前言 在c/C中存在一种内存的概念; 一般来说一个内存的空间分布包括栈区,堆区,代码段等等; 且内存是…

Notes2024节气和日历来了

大家好&#xff0c;才是真的好。 还有三周就是2024年了。 2024的节假日安排其实早就发布&#xff0c;有些人已经把这些节假日安排都写在自己的日历上了&#xff1b;同时我们这里也设置了一份&#xff0c;包括节假日和农历二十四节气以及中西传统的节日日期等。 如果你需要的…