使用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.hqwc.cn/news/703805.html

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

相关文章

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.6讲 GPIO中断实验-GPIO驱动添加中断处理函数

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

搭建域环境

文章目录 一、配置域控网络二、安装DNS服务三、安装域控四、新建用户五、新建域内机器六、限制域用户权限(登陆时间和登录机器) windows server 2008是基于windows vista开发的,windows server 2008 r2是基于Win 7开发的。域控为windows serv…

线性回归学习笔记

学习了王天一博士的机器学习40讲,做个小总结: 1、机器学习中,回归问题隐含了输入变量和输出变量均可连续取值的前提。 2、单变量线性回归,所有样本到直线的欧氏距离之和最小,即均方误差最小化。 3、最小二乘法的几何意…

光伏行业该如何起步?

随着全球对可再生能源的需求日益增长,光伏行业作为其中的佼佼者,正迎来前所未有的发展机遇。然而,对于新进入者或希望在这一领域有所建树的企业来说,如何起步并稳健发展是一个值得深思的问题。以下是一些关于光伏行业起步的建议。…

有什么比较方便的裁剪图片软件?7个软件教你轻松裁剪图片

有什么比较方便的裁剪图片软件?7个软件教你轻松裁剪图片 以下是七款比较方便的裁剪图片软件,它们可以帮助您轻松裁剪图片: 图片编辑助手:作为图像处理领域的佼佼者,这款软件提供了多种裁剪工具和功能。您可以使用其…

「Python绘图」绘制同心圆

python 绘制同心圆 一、预期结果 二、核心代码 import turtle print("开始绘制同心圆") # 创建Turtle对象 pen turtle.Turtle() pen.shape("turtle") # 移动画笔到居中位置 pen.pensize(2) #设置外花边的大小 # 设置填充颜色 pen.fillcolor("green&…

EasyExcel进阶教程

EasyExcel进阶教程 EasyExcel进阶教程概述一、关于表头1.1 多级表头1.2 ExcelProperties注解的index字段和order字段的第一个区别1.3 ExcelProperties注解的index字段和order字段的第二个区别1.4 表头单元格的合并二、动态表头三、样式设置3.1 表头样式设置3.2 数据样式设置Eas…

命令行中,Python 想使用本地环境,但总是显示为Anaconda的虚拟环境

电脑环境 Python 本地环境(Python3.9.5)Anaconda 虚拟环境(Python3.8.8) 遇到的问题 在cmd 中,我想在本地环境使用 Python、pip ,但它却是一直识别成Anaconda的虚拟环境。 解决方法 环境变量配置中&am…

010.理解异步性

异步消息传递是响应式系统的一个关键特性。但到底是什么异步性,为什么它对响应式应用程序如此重要?我们的人生注定在许多异步任务中。你可能没有意识到,但你的日常活动如果它们本质上不是异步的,那就太烦人了。要理解什么是异步,…

VC++6.0 常用的文件对话框和目录选择对话框

1,文件对话框 //1,弹出文件打开对话框CString strFileName "";char szFilter[] {"exe files(*.exe)|*.exe|All Files(*.*)|*.*|"};CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,NULL);if(dlg.DoModal() …

Android中使用Palette让你的页面UI优雅起来

文章目录 1. 什么是Palette2. 引入Palette3. 使用 Palette3.1 同步方式3.2 异步方式3.3 获取色调值 4. 举例4.1 布局文件 activity_palette_list.xml ⬇️4.2 Activity:PaletteListActivity⬇️4.3 列表Adapter:PaletteListAdapter ⬇️4.4 列表item布局…

购买商用ssl证书并在windows服务器IIS上配置https域名(案例为阿里云)

阿里云、华为云等各路云都有ssl证书购买,价格相差不大,操作也都差不多,请自行选择。 本文以阿里云操作为案例。 购买SSL证书 点击购买 付款买入 注意,如果自己搞起来有问题,阿里购买的时候建议选择申请协助服务。购买…