vcpkg下载及安装

news2024/9/29 15:22:09

文章目录

  • 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文件上

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

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

相关文章

linux下time与dd命令结合测试存储器速度

在Linux中,"time"和"dd"命令是两个独立的命令,它们可以结合使用来测量"dd"命令执行的时间。 下面是它们的简要说明: time命令: "time"命令用于测量命令执行的时间和资源使用情况。它可以…

数据库传奇:MySQL创世之父的两千金My、Maria

《数据库传奇:MySQL创世之父的两千金My、Maria》 一、前言 MySQL是一款备受欢迎的关系型数据库管理系统(RDBMS),最初由瑞典公司MySQL AB开发,目前隶属于Oracle Corporation。在DB-Engines的排名中,MySQL稳…

计网Lesson9 - 链路协议和网络概述

文章目录 数据链路层协议Ethernet V2标准Ethernet V2帧格式Ethernet V2帧长度标准以太网帧 MAC 帧协议 PPP 协议PPP 概述PPP 帧 网络层网络层的设计选择 数据链路层协议 Ethernet V2标准 Ethernet V2帧格式 以太网帧格式说明: 6 6 6 字节目标地址 6 6 6 字节源地…

【广州华锐视点】物流数字孪生三维可视化系统打造更高效、智能的物流管理体验

在当今快速发展的物流行业中,传统的管理和监控方法往往难以满足复杂运营的需求。为了解决这个问题,广州华锐互动提供物流数字孪生三维可视化系统定制开发服务,打造更为高效、智能的物流管理体验。 物流数字孪生三维可视化系统是一种基于虚拟现…

【算法与数据结构】455、LeetCode分发饼干

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:因为大饼干可以满足大胃口的孩子也必然可以满足小胃口的孩子,如果要尽可能的满足孩子的胃口…

Git篇---第八篇

系列文章目录 文章目录 系列文章目录前言一、如果本次提交误操作,如何撤销?二、你使用过git stash命令吗?你一般什么情况下会使用它?三、如何查看分支提交的历史记录?查看某个文件的历史记录呢?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住…

B站武sir-django教程(1)

day15 初识Django Python知识点:函数、面向对象。前端开发:HTML、CSS、JavaScript、jQuery、BootStrap。MySQL数据库。Python的Web框架: Flask,自身短小精悍 第三方组件。Django,内部已集成了很多组件 第三方组件。…

【头歌系统数据库实验】实验7 SQL的复杂多表查询-1

目录 第1关:求各颜色零件的平均重量 第2关:求北京和天津供应商的总个数 第3关:求各供应商供应的零件总数 第4关:求各供应商供应给各工程的零件总数 第5关:求重量大于所有零件平均重量的零件名称 第6关&#xff1…

IT新闻资讯系统,使用mysql作为后台数据库,此系统具有显示数据库中的所有信息和删除两大功能。

表的准备: -- MySQL Administrator dump 1.4 -- -- ------------------------------------------------------ -- Server version 5.1.40-community /*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT */; /*!40101 SET OLD_CHARACTER_SET_RESULTSCHAR…

GLB/GLTF 模型压缩轻量化

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 1、具有 Draco 压缩的 GLTF 和 GLB 文件格式 随着对沉浸式 3D 体验的…

Linux 防病毒软件:CentOS有哪些付费的防病毒软件

CentOS是一个基于开源的Linux发行版,通常不像Windows那样普遍需要使用付费的防病毒软件。大多数Linux系统侧重于使用开源和免费的安全工具来保护系统。一些常见的免费和开源的防病毒软件和安全工具包括ClamAV、Sophos Antivirus for Linux、rkhunter、chkrootkit等。 如果你非…

Leetcode—89.格雷编码【中等】

2023每日刷题(五十九) Leetcode—89.格雷编码 算法思想 套公式法实现代码 /*** Note: The returned array must be malloced, assume caller calls free().*/ int gray(int n) {return n ^ (n >> 1); } int* grayCode(int n, int* returnSize) {…

磁盘坏道修复工具-是一款非常方便实用的磁盘坏道修复软件-供大家学习研究参考

1、支持磁盘数据擦除。 2、杜绝因硬盘坏道,而产生个人隐私数据泄露的问题。 3、支持对该磁盘格式化。 下载:https://download.csdn.net/download/weixin_43097956/88625682

一文读懂Java中应用最广泛的策略模式

策略模式 策略模式是应用最为广泛也是最基础的设计模式。策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法&#xff0…

c++原子变量

原子变量 概述 ​ C11提供了一个原子类型std::atomic<T>&#xff0c;通过这个原子类型管理的内部变量就可以称之为原子变量&#xff0c;我们可以给原子类型指定bool、char、int、long、指针等类型作为模板参数&#xff08;不支持浮点类型和复合类型&#xff09;。 ​ …

SpringCloud Alibaba 入门到精通 - Gateway

SpringCloud Alibaba 入门到精通 - Gateway 一、网关简介1.简单使用Gateway网关 二、断言1.After 断言时间2.Before 断言时间3.Between 断言时间4.Cookie 断言Cookie5.Header 断言请求头6.Host 断言请求头中的Host7.Method 断言请求方式8.Path 断言请求路径9.Query 断言请求URL…

LIN总线信号串行译码

我们用虹科Pico汽车示波器捕捉了LIN总线信号 &#xff0c;如果想看它对应的报文数据&#xff0c;我们可以应用PicoScope Automotive软件的串行译码功能来对它破译。 使用指导如下&#xff1a; 点击“串行译码”&#xff0c;选择对应的协议&#xff0c;如LIN。 在下面对话框&…

linux高级管理——访问MYSQL数据库

一、认识数据库系统&#xff1a; MySQL数据库系统也是一个典型的C/S(客户端/服务器&#xff09;架构的应用&#xff0c;要访问MySQL数据库需要使用专门的客户端软件。在Linux系统中&#xff0c;最简单、易用的MySQL客户端软件是其自带的mysql命令工具。 1&#xff0e;登录到My…

使用Visual Studio(VS)创建空项目的Win32桌面应用程序【main函数入口变WinMain】

前言 在Visual Studio中直接新建Windows桌面应用程序会有很多多余的代码生成&#xff0c;本文将提供从空项目创建Win32项目的方法&#xff0c;解决新建空项目直接使用WinMain代码编译报错的问题 例如&#xff1a;LNK2019 &#xff1a;无法解析的外部符号 参考博客&#xff1…

使用 Timm 库替换 RT-DETR 主干网络 | 1000+ 主干融合RT-DETR

文章目录 前言版本差异说明替换方法parse_moedl( ) 方法_predict_once( ) 方法修改 yaml ,加载主干论文引用timm 是一个包含最先进计算机视觉模型、层、工具、优化器、调度器、数据加载器、数据增强和训练/评估脚本的库。 该库内置了 700 多个预训练模型,并且设计灵活易用。…