1、什么是vcpkg

        对于使用过Python进行程序设计的开发者们,大多都会对Python的各种库和依赖,仅仅通过几条简单命令行就完成配置的操作感到惊叹,非常的省事省力。反倒是C/C++开发时,要是每个库都要自己下载源码编译或者对环境进行配置,那这对资深经验的开发者来说,也不是很难,花点时间就行,但是对于刚起步的开发者而言,各种报错和环境配置问题就是一个让人头大的问题。

        那么,在C/C++中,有没有和Python类似的,对这个库进行快捷管理配置的工具呢?

        答案是肯定的,那就是vcpkg,那么相信很多读者们可能之前没有接触过vcpkg这个软件工具哈,下面对它做一个简单的介绍。

        vcpkg 是由 Microsoft 和 C++ 社区维护的免费开源 C/C++ 包管理器,可在 Windows、macOS 和 Linux 上运行。 它是核心的 C++ 工具,使用 C++ 和 CMake 脚本编写。 它旨在解决管理 C/C++ 库的独特难题。

        简单的大白话来说,vcpkg就是一个软件包管理工具,让开发者快速使用安装一些工具软件,跟Python安装一些依赖库的方式差不多

        vcpkg源码下载地址:

GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOShttps://github.com/microsoft/vcpkg

2、安装配置vcpkg环境

(1)、下载完整安装包

        在进行操作的第一步,就是下载vcpkg,进入到vcpkg的仓库代码中,把资源文件给拉下来。

(2)、生成可执行文件

        在完成了上面的下载工作后,将vcpkg的完整包解压到一个你想要放置的路径下,然后打开终端,切换到路径下。

        在Windows平台下,运行命令:.\bootstrap-vcpkg.bat

        在Linux平台下,运行命令:./bootstrap-vcpkg.sh

(3)、加入系统环境变量(可选)

        将安装的路径复制,然后加入到系统属性设置的环境变量中。

(4)、检查是否可以正常运行

        如果配置到了系统环境变量中,可以直接打开终端,就可以执行了,没有的话,就必须切换系统路径到安装的文件处。

        执行vcpkg --version,检查是否可以运行输出安装的vcpkg版本信息。

        到这一步,vcpkg就可以正常的使用了。

(5)、链接到编译器

        在MS Build中,也就Visual Studio 2022自带的编译器,进行链接的操作命令:vcpkg integrate install

        只需在首次启用 MSBuild 集成时运行 vcpkg integrate install 命令。 这将为所有现有和未来的项目启用 MSBuild 集成。 可以使用 vcpkg integrate remove 删除 MSBuild 系统范围的集成。

        这个集成方法会自动将已安装 vcpkg 的包添加到以下项目属性:Include Directories、Link Directories和 Link Libraries。

        若要在 CMake 项目中 使用vcpkg,需要将 CMAKE_TOOLCHAIN_FILE 变量设置为使用 vcpkg 的 CMake 工具链文件。 vcpkg 工具链位于 %VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake中,其中 %VCPKG_ROOT% 是 vcpkg 安装路径。

3、vcpkg的常用应用

(1)、安装C/C++工具库

        安装包的命令如下:

vcpkg install [options] <package>...

        以安装protobuf为例,那么操作命令为:vcpkg install protobuf

(2)、卸载C/C++工具库

        从经典模式中移除端口包。

vcpkg remove [options] <package>...

(3)、更新库文件

        将一组经典模式的已安装包与当前可用版本进行比较。要移除过时的版本而不安装替代版本使用 vcpkg remove --outdated。要移除并安装较新的版本,请使用 vcpkg upgrade。

vcpkg update [options]

(4)、查看已安装的库

        显示已安装树中的包列表以及每个包的版本和说明。

vcpkg list [options]

(5)、构建系统集成

        将 vcpkg 与 shell 和构建系统集成。

  • 构建系统集成
vcpkg integrate [options] install
vcpkg integrate [options] remove
vcpkg integrate [options] project
  • Shell 集成
vcpkg integrate [options] powershell
vcpkg integrate [options] bash
vcpkg integrate [options] zsh
vcpkg integrate [options] x-fish

        vcpkg integrate install 与 Visual Studio 集成(仅限 Windows),设置用户范围的 vcpkg 实例,并显示 CMake 集成帮助。

        本文主要是对vcpkg进行基础的介绍及环境搭建的经验近些年分享。在上面列举的是一些常用的命令,如果有兴趣继续深入了解,可以访问微软官网关于对vcpkg的教程:通用命令选项 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/vcpkg/commands/common-options

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

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

相关文章

【Docker】常用帮忙、镜像、容器、其他命令合集(2)

【Docker】常用帮忙、镜像、容器、其他命令合集&#xff08;2&#xff09;博主有话说容器命令新建容器并启动列出所有的运行的容器退出容器docker run -it centos:7.0.1406 /bin/bash指令解析docker exec -it ... bash 、docker run -it ... bash、docker attach [容器] 的exit…

系统编程.9 线程

1.线程概述程序运行起来编程进程&#xff0c;进程由一个个线程构成。eg&#xff1a;没有启动的qq时一个程序&#xff0c;启动后登录qq&#xff0c;qq是一个进程&#xff0c;实际上进程什么都没做&#xff0c;只是提供了需要的资源&#xff0c;打开聊天框可以和别人进行通信&…

2.10组件间的通信

1.Vue组件的嵌套关系1.1认识组件的嵌套前面我们是将所有的逻辑放到一个 App.vue 中&#xff1b;在之前的案例中&#xff0c;我们只是创建了一个组件 App&#xff1b;如果我们一个应用程序所有的逻辑都放在一个组件中&#xff0c;那么这个组件就会变成非常的臃肿和难以维护&…

Mybatis-Plus学习笔记

目录 一、MyBatis-Plus简介 二、MyBatisPlus使用的基本流程&#xff1a; &#xff08;1&#xff09;引入MybatisPlus依赖&#xff0c;代替MyBatis依赖 &#xff08;2&#xff09;自定义Mapper继承BaseMapper ​编辑&#xff08;3&#xff09;在实体类上添加注解声明表信息…

Day22 用C语言编译应用程序

文章目录1. 保护操作系统5&#xff08;harib19a&#xff09;2. 帮助发现bug&#xff08;harib19b&#xff09;3. 强制结束应用程序&#xff08;harib19c&#xff09;4. 用C语言显示字符串&#xff08;harib19e&#xff09;5. 显示窗口&#xff08;harib19f&#xff09;1. 保护操…

简单学习HTML+CSS+JavaScript

一、HTML HTML被称为 超文本标记语言&#xff0c;是由一系列标签构成的语言。 下面介绍HTML中的标签&#xff1a; &#xff08;一&#xff09;HTML文件基本结构 <!DOCTYPE html><html><head><title>Document</title></head> <body&…

强化学习中重要性采样

PPO 中重要性采样 https://github.com/modelscope/ms-swift/blob/main/docs/source/Instruction/GRPO/GetStarted/GRPO.md乐&#xff0c;这个网页中是的groundtruth是错误的&#xff08;可能是为了防止抄袭&#xff09;。一些例子 0. 池塘养鱼的一个例子 想象一下&#xff0c;你…

《树与二叉树详解:概念、结构及应用》

目录 一. 树的概念和结构 1.1 树的基本概念 1.2 树的结构特点 二. 树的表示方法和实际运用 2.1 孩子 - 兄弟表示法&#xff08;Child-Sibling Representation&#xff09; 2.2 树的实际应用场景 三. 二叉树的概念 3.1 二叉树的核心定义 3.2 二叉树的基本分类 四. 二叉…

Qt/C++,windows多进程demo

1. 项目概述 最近研究了一下Qt/C框架下&#xff0c;windows版本的多进程编写方法&#xff0c;实现了一个小demo。下面详细介绍一下。 MultiProcessDemo是一个基于Qt框架实现的多进程应用程序示例&#xff0c;展示了如何在Windows平台上通过共享内存和事件机制实现进程间通信。该…

Android SystemServer 系列专题【篇五:UserController用户状态控制】

本篇接着SystemServer的启动流程&#xff0c;围绕SystemServer最后阶段关于主用户的启动和解锁的流程&#xff0c;作为切入点&#xff0c;来看看SystemServer是如何讲用户状态同步到所有的系统级服务中。ssm.onStartUserssm.onUnlockingUserssm.onUnlockedUser本篇先介绍UserCo…

推荐使用 pnpm 而不是 npm

npm 的局限性 磁盘空间浪费在 npm 早期版本中&#xff0c;每个项目的node_modules目录都会完整复制所有依赖包&#xff0c;即使多个项目依赖同一个包的相同版本&#xff0c;也会重复存储。这导致磁盘空间被大量占用&#xff0c;随着项目数量的增加&#xff0c;存储成本显著上升…

Transformer实战(18)——微调Transformer语言模型进行回归分析

Transformer实战&#xff08;18&#xff09;——微调Transformer语言模型进行回归分析0. 前言1. 回归模型2. 数据处理3. 模型构建与训练4. 模型推理小结系列链接0. 前言 在自然语言处理领域中&#xff0c;预训练 Transformer 模型不仅能胜任离散类别预测&#xff0c;也可用于连…

【Linux】【实战向】Linux 进程替换避坑指南:从理解 bash 阻塞等待,到亲手实现能执行 ls/cd 的 Shell

前言&#xff1a;欢迎各位光临本博客&#xff0c;这里小编带你直接手撕&#xff0c;文章并不复杂&#xff0c;愿诸君耐其心性&#xff0c;忘却杂尘&#xff0c;道有所长&#xff01;&#xff01;&#xff01;&#xff01; IF’Maxue&#xff1a;个人主页&#x1f525; 个人专栏…

linux常用命令 (3)——系统包管理

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​​ ​​ hi&#xff0c;大家好&#xff0c;我是christine-rr ! 今天来分享一下linux常用命令——系统包管理 目录linux常用命令---系统包管理&#xff08;一&#xff09;Debian 系发行版&#xff08;Ubuntu、Debian、Linux …

YOLOv8 mac-intel芯片 部署指南

&#x1f680; 在 Jupyter Notebook 和 PyCharm 中使用 Conda 虚拟环境&#xff08;YOLOv8 部署指南&#xff0c;Python 3.9&#xff09; YOLOv8 是 Ultralytics 开源的最新目标检测模型&#xff0c;轻量高效&#xff0c;支持分类、检测、分割等多种任务。 在 Mac&#xff08;…

【高等数学】第十一章 曲线积分与曲面积分——第六节 高斯公式 通量与散度

上一节&#xff1a;【高等数学】第十一章 曲线积分与曲面积分——第五节 对坐标的曲面积分 总目录&#xff1a;【高等数学】 目录 文章目录1. 高斯公式2. 沿任意闭曲面的曲面积分为零的条件3. 通量与散度1. 高斯公式 设空间区域ΩΩΩ是由分片光滑的闭曲面ΣΣΣ所围成&#x…

IDEA试用过期,无法登录,重置方法

IDEA过期&#xff0c;重置方法: IntelliJ IDEA 2024.2.0.2 (亲测有效) 最新Idea重置办法!&#xff1a; 方法一&#xff1a; 1、删除C:\Users\{用户名}\AppData\Local\JetBrains\IntelliJIdea2024.2 下所有文件(注意&#xff1a;是子目录全部删除) 2、删除C:\Users\{用户名}\App…

创建用户自定义桥接网络并连接容器

1.创建用户自定义的 alpine-net 网络[roothost1 ~]# docker network create --driver bridge alpine-net 9f6d634e6bd7327163a9d83023e435da6d61bc6cf04c9d96001d1b64eefe4a712.列出 Docker 主机上的网络[roothost1 ~]# docker network ls NETWORK ID NAME DRIVER …

Vue3 + Vite + Element Plus web转为 Electron 应用,解决无法登录、隐藏自定义导航栏

如何在vue3 Vite Element Plus搭好的架构下转为 electron应用呢&#xff1f; https://www.electronjs.org/zh/docs/latest/官方文档 https://www.electronjs.org/zh/docs/latest/ 第一步&#xff1a;安装 electron相关依赖 npm install electron electron-builder concurr…

qt QAreaLegendMarker详解

1. 概述QAreaLegendMarker 是 Qt Charts 模块中的一部分&#xff0c;用于在图例&#xff08;Legend&#xff09;中表示 QAreaSeries 的标记。它负责显示区域图的图例项&#xff0c;通常包含区域颜色样例和对应的描述文字。图例标记和对应的区域图关联&#xff0c;显示区域的名称…