使用vcpkg与json文件自动安装项目依赖库

说明

本文记录自己使用vcpkg.json文件自动安装依赖库并完成编译的全过程。

关于vcpkg是什么这里就不多详细解释,可以看一下专门的介绍及安装的文章,总之了解这是一个C++的包管理工具就可以了。

流程

下面介绍从GitHub上克隆C++项目以及为这个项目安装所需依赖项,并完成编译的全过程。

1 拉取项目

在GitHub上找到你想要克隆的项目,复制地址。

在这里插入图片描述

得到地址后,在你想要复制项目的文件夹中右击,选"open git bash here"
输入git clone + 复制的地址
等待项目克隆完成
在这里插入图片描述

2 编辑vcpkg.json文件

这一步的前提是电脑上已经安装了vcpkg,并将它的路径同步到了环境变量中,记住这个环境变量的名称,在编写CMakeLists文件时要用,如图
在这里插入图片描述
没有安装的话需要找教程安装一下。
然后根据该项目在README中所描述的依赖项编写vcpkg.json
依赖项
编写vcpkg.json文件

{"name": "electric-inspection-backend","version-string": "0.0.1","dependencies": ["boost","cgal","lastools","spdlog","cxxopts","tbb","jsoncpp","shapelib","eigen3","glm","gmp","mpfr","ceres","libpng","libjpeg-turbo","tiff","glew","glad","glfw3"]}
  • name:项目的名称,标识这个 vcpkg.json 文件所描述的项目。无需在意,这个的作用只是为了写编译过程中的日志文件。
  • version-string:项目版本号,取决于自己,可直接复制。
  • dependencies:依赖库列表

这里安装的库明显比要求的多,这是因为有些库并没有在README中写明。不过你在后续使用cmake构建时,会提醒你却库,在这里再添加就好。

3 修改CMakeLists文件

此时需要修改项目根目录下的CMakeLists.txt文件,使其能够连接到vcpkg,自动识别vcpkg.json文件,并开始安装依赖库。

在这里插入图片描述
注意,vcpkg相关配置代码必须在project之前,否则无法自动识别vcpkg.json文件,可从下面复制

# vcpkg配置,必须位于project之前
if(DEFINED ENV{VCPKG_ROOT})set(VCPKG_ROOT "$ENV{VCPKG_ROOT}" CACHE PATH "") # 从环境变量中读取vcpkg根目录
else()set(VCPKG_ROOT "E:/vcpkg_clone" CACHE PATH "") # 手动设置vcpkg根目录
endif()message("set VCPKG_ROOT: ${VCPKG_ROOT}")
set(VCPKG_FEATURE_FLAGS "version") # 用于支持自定义依赖版本
set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake") # 设置vcpkg工具链

构建项目

接下来就可以开始使用cmake指令来构建项目,指令可参照该项目在GitHub上给定的指令顺序
在这里插入图片描述
摁住shift右击,打开PowerShell窗口,输入命令,开始安装
在这里插入图片描述
安装完成
在这里插入图片描述

这时可以看到build文件夹中多出了 vcpkg_installed 文件,这就是该项目依赖项的安装位置。

在这里插入图片描述
然后启动解决方案,运行就可以了。

注意:之后可能代码中还会出现错误,但是这与依赖项安装就没关系了。我这里就出现了一些代码上的错误,查资料改一下就可以运行了。

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

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

相关文章

二叉树的常见操作

建立树 复制二叉树 计算深度 计算总结点数 计算叶子结点数

OpenHarmony标准设备应用开发(二)——布局、动画与音乐

本章是 OpenHarmony 标准设备应用开发的第二篇文章。我们通过知识体系新开发的几个基于 OpenHarmony3.1 Beta 标准系统的样例:分布式音乐播放、传炸弹、购物车等样例,分别介绍下音乐播放、显示动画、动画转场(页面间转场)三个进阶…

AI工具的热门与卓越:揭示AI技术的实际应用和影响

文章目录 每日一句正能量前言常用AI工具创新AI应用个人体验分享后记 每日一句正能量 我们在我们的劳动过程中学习思考,劳动的结果,我们认识了世界的奥妙,于是我们就真正来改变生活了。 前言 随着人工智能(AI)技术的快…

深度剖析MyBatis的二级缓存

二级缓存的原理 MyBatis 二级缓存的原理是什么? 二级缓存的原理和一级缓存一样,第一次查询会将数据放到 缓存 中,然后第二次查询直接去缓存读取。但是一级缓存是基于 SqlSession 的,二级缓存是基于 mapper 的 namespace 的。也就是…

Qt运行时,如何设置第一个聚焦的控件

问题:Qt第一个聚焦的控件,如何自行设置? 尝试: 1.在代码中设置 lineEdit->setFocus() 。无效! 2.Qt Designer–打开form1.ui–菜单栏下一行–Edit Tab Order–按顺序点击–菜单栏下一行–Edit Widgets–退出。无效…

【easyX】动手轻松掌握easyX 1

01 简单绘图 在这个程序中&#xff0c;我们先初始化绘图窗口。其次&#xff0c;简单绘制两条线。 #include <graphics.h>//绘图库头文件 #include <stdio.h> int main() {initgraph(640, 480);//初始化640✖480绘图屏幕line(200, 240, 440, 240);//画线(200,240)…

MySQL是如何选择索引的?

2.3.5. 索引选择 MySQL是如何选择索引的&#xff1f; 优化器决定了具体某一索引的选择&#xff0c;也就是常说的执行计划。而优化器的选择是基于成本&#xff08;cost&#xff09;&#xff0c;哪个索引的成本越低&#xff0c;优先使用哪个索引。 SQL 优化器会分析所有可能的执…

开放式运动耳机哪款好用?五款高性能值得信赖产品推荐

身为户外运动的达人&#xff0c;我发现开放式运动耳机简直是咱们运动时的最佳拍档&#xff0c;不管是跑步还是健身&#xff0c;开放式运动耳机最为舒适&#xff0c;它的妙处就在于不用塞进耳朵&#xff0c;这样既安全又卫生&#xff0c;户外动起来更放心。但市面上好坏参半&…

【半夜学习MySQL】内置函数(含日期、字符串、数学等函数常用用法介绍及示例详解)

&#x1f3e0;关于专栏&#xff1a;半夜学习MySQL专栏用于记录MySQL数据相关内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 日期函数字符串函数数学函数其他函数 日期函数 函数名称描述current_date()当前日期current_time()当前时间current_time()…

幻兽帕鲁Palworld服务器手动部署

目录 帕鲁官方文档手动安装steamcmd通过steamcmd安装帕鲁后端客户端连接附录&#xff1a;PalServer.sh的启动项附录&#xff1a;配置文件 帕鲁官方文档 https://tech.palworldgame.com/ 手动安装steamcmd 创建steam用户 sudo useradd -m steam sudo passwd steam下载steamc…

你写HTML的时候,会注重语义化吗?

其实说到语义化&#xff0c;多年前端开发经验的老手估计也不会太在意&#xff0c;有时候工期太紧&#xff0c;有时候自己疏忽&#xff0c;也就不那么在意了&#xff0c;直接DIVCSS一把梭下去了。 目录 什么是HTML 什么是HTML语义化 HTML语义化所带来的好处 我把CSS样式引入…

_pickle.UnpicklingError: STACK_GLOBAL requires str

导致这个报错的原因是我跑yolo的时候修改数据集了&#xff0c;里面的label.cache没有删除&#xff0c;咱只要删除掉缓存就行&#xff01;&#xff01; 我这里是已经删除掉了&#xff0c;所以图片里面没有&#xff0c;一般就是在箭头所示位置有.cache文件的

Vue3知识总结-4

Vue3知识总结-4 文章目录 Vue3知识总结-4插槽Slots渲染作用域默认内容具名插槽插槽中的数据传递具名插槽传递数据 组件声明周期声明周期示意图 组件生命周期的应用动态组件组件保持存活组件被卸载 异步组件依赖注入 插槽Slots 在某些场景中&#xff0c;可能想要为子组件传递一…

xxljob分片广播+多线程实现高效定时同步elasticsearch索引库

需求&#xff1a;为了利用elasticsearch实现高效搜索&#xff0c;需要将mysql中的数据查出来&#xff0c;再定时同步到es里&#xff0c;同时在同步过程中通过分片广播多线程提高同步数据的效率。 1. 添加映射 使用kibana添加映射 PUT /app_info_article {"mappings&quo…

HL7协议

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.介绍2.传输协议规范2.1. MLLP2.1.1. 数据头定义2.1.2. 转义字符集 2.2. 规范说明2.3. 消息格式说明 3.HL7结构介绍3.1. 患者建档&#xff08;ADT^A28&#xff09;…

人工智能领域向量化技术加速多模态大模型训练与应用

目录 前言1、TextIn文档解析技术1.1、文档解析技术1.2、目前存在的问题1.2.1、不规则的文档信息示例 1.3、合合信息的文档解析1.3.1、合合信息的TextIn文档解析技术架构1.3.2、版面分析关键技术 Layout-engine1.3.3、文档树提取关键技术 Catalog-engine1.3.4、双栏1.3.5、非对称…

计算机服务器中了locked勒索病毒怎么解决,locked勒索病毒解密恢复工具

在网络技术飞速发展的时代&#xff0c;通过网络开展各项工作业务成为众多企业的首选&#xff0c;网络也为企业的生产运营提供了极大便利&#xff0c;大大提升了企业办公效率&#xff0c;但是利用网络避免不了网络威胁的存在&#xff0c;数据安全问题一直是企业关心的主要话题。…

TikTok机房ip好还是住宅ip好?

住宅ip比较好&#xff0c;机房数据中心IP高效、低价&#xff0c;所以使用的人多且用处复杂&#xff0c;这类ip极大可能存在滥用的黑历史&#xff0c;通过此类ip访问tiktok&#xff0c;被禁止的可能性更高&#xff0c;更容易被拉入黑名单。所以我们推荐tiktok独享原生ip搭建节点…

CC工具箱使用指南:【界线导出Excel(一横)】

一、简介 群友定制工具。 这个工具的目的是将面要素的边界线的属性导出Excel。 给定的Excel模板如下&#xff1a; 结果需要输出每一段界一的起点、终点的坐标&#xff0c;这里以度分秒的方法表达。 每段界线的方位角以及方向&#xff0c;方向按16位方位角描述&#xff1a; …

高通QCS6490开发(六):连接使用摄像头

本文将会介绍如何在FV01开发板上连接摄像头和显示预览。 所用硬件有&#xff1a; 1. FV01开发板 2.Raspberry 摄像头 操作步骤如下&#xff1a; 通过FPC线和杜邦线将FV01板和摄像头连接起来&#xff0c;接线如下&#xff1a; 1、Camera设备连接&#xff0c;通过22pin转15pi…