使用vcpkg包管理工具配置C++工程环境

2024-03-28 11:44

本文主要是介绍使用vcpkg包管理工具配置C++工程环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

做开发转眼间有十多年了,期间主要以C++为主,因为其蛋疼的没有自带的包管理工具,因此每次搞个工程都需要花大量的时间在环境的配置上。

这些配置的操作无非就是去官网下载库,然后包含添加到工程里面,非常机械化,然而又不可避免。虽然配置到全局也是一种办法,然而又增加了工程间互相干扰的风险。最近又要开启一个新工程,遂研究一下已经标注了很久的vcpkg包管理工具,看看能不能用它来简化下这要命的机械化操作。

这篇文章将主要介绍vcpkg包管理工具的安装和利用其为工程配置目标库的操作。因为这次只用到了OpenCV这个库,因此先做相应的介绍,后续用到其他的库再继续补充。

vcpkg的安装

安装vcpkg,首先先做环境装备。本人事先安装了git、VS2022和cmake,如果没有安装的话需要先安装一下。

环境准备完成后,可以直接克隆vcpkg的开源代码:

git clone https://github.com/microsoft/vcpkg

然后运行安装脚本即可:

.\vcpkg\bootstrap-vcpkg.bat

运行完可以查看安装的版本来确保安装完成了:

 .\vcpkg.exe --version

正常输出版本号即可,不过这个安装没有添加环境变量,因此需要跑到相应的文件夹下才行,可以直接把vcpkg.exe所在路径直接添加到环境变量中,以方便随时随地打开控制台就能操作它。

使用vcpkg为目标工程配置相应的库

为了用vcpkg为VS的工程配置对于的库,需要先以管理员的身份运行终端,然后安装相关的整合插件。

vcpkg.exe integrate install

OpenCV

使用vcpkg安装OpenCV4的64位版本,可以先搜索一下(也可以直接去这里看看,更加直观一点https://vcpkg.link),确保存在相应的对象:

vcpkg.exe search opencv4 

安装

vcpkg.exe install opencv4 --triplet=x64-windows

vcpkg这里可能会下载代码并做编译,需要等待比较漫长的时间(我这里等了11min)。。。

安装完成之后无需在做任何事情,我们就可以直接在程序中引用OpenCV的库啦,可以尝试下以下代码:

#include <iostream>
#include <opencv2/opencv.hpp>int main() 
{// 创建一个空白图像cv::Mat image = cv::Mat::zeros(400, 600, CV_8UC3);cv::circle(image, cv::Point(400, 100), 50, cv::Scalar(0, 0, 255), -1);// 显示图像cv::imshow("Drawing Example", image);// 等待用户按下任意键cv::waitKey(0);return 0;
}

编译后可以看到在生成的exe文件夹中已经把OpenCV对于的链接库拷贝过来了。如果没有用到相应的库则不会拷贝,相当方便,比手动去配置高到天上去。

参考资料

https://github.com/microsoft/vcpkg

https://blog.csdn.net/qq_43511740/article/details/135582922

这篇关于使用vcpkg包管理工具配置C++工程环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/855522

相关文章

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Java中StopWatch的使用示例详解

《Java中StopWatch的使用示例详解》stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,这篇文章主要介绍... 目录stopWatch 是org.springframework.util 包下的一个工具类,使用它

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s