VS code配置C/C++、OpenCV(Windows)

一、前言

  由于今年疫情影响,很多计划内的事情都泡汤了,鉴于下学期找工作需要,决定自己在家学习C/C++、OpenCV,刷刷题。这时候找一个合适的IDE编辑运行代码就尤为重要,本来准备下载VS,然鹅无意间在网上看到一款轻量级VS编辑器:VScode,对于一个连编译器、编辑器小白的我来说就是一个巨坑,如果网速良好我还是建议下载一个VS。下面就把配置C/C++、OpenCV过程中一些经验(血泪史)分享给有需要的小伙伴!

先搞清楚VS code是什么东东?

二、编译器、编辑器、链接器与IDE

2.1编译器

百度词条解释:

编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。

对于C语言来说,编译器就是将源程序(.c/.cpp)转化成二进制形式的目标程序(Windows下为.obj)。Windows采用GCC(GNU Compiler Collection,GNU编译器套件)作为程序语言的编译器。

2.2编辑器

百度词条解释:

文本编辑器(或称文字编辑器)是用作编写普通文字的应用软件,它与文档编辑器(或称文字处理器)不同之处在于它并非用作桌面排版(例如文档格式处理),它常用来编写程序的源代码。

简单来说,就是一个只负责敲代码的应用工具,可以通过将编辑器上的源码拷贝到Source File中编译运行调试等操作。
常用的编辑器有:

  • Windows记事本
  • VIM编辑器
  • Sublime Text编辑器
  • Notepad++编辑器
  • VS code编辑器

2.3链接器

百度词条解释:

链接器(Linker)是一个程序,将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件。目标文件是包括机器码和链接器可用信息的程序模块。简单的讲,链接器的工作就是解析未定义的符号引用,将目标文件中的占位符替换为符号的地址。链接器还要完成程序中各目标文件的地址空间的组织,这可能涉及重定位工作。

再简单来说,链接器就是将编译器产生的目标文件打包成可执行文件(Windows下是我们常见的.exe文件)或者库文件或者目标文件的程序。我们平时所接触的一些动态链接库(.dll/.so)、静态链接库(.lib/.a)都是链接器对目标文件打包构成的库文件,方便使用!

2.4IDE

百度词条解释:

引集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver等),因为很多项任务会自动生成。

简单来说,就是集成了编辑器、编译器以及链接器等众多功能于一体的一个集成开发环境。
目前最为常用的IDE就是微软公司开发的IDE:Microsoft Visual Studio(简称VS)

在编写C/C++程序中的区别:

工具或指令作用
编辑器写代码,产生.c/.cpp源文件
编译器编译源文件,产生.obj目标文件
链接器打包目标文件,产生.exe等可执行文件
IDE集成以上功能,可同时完成以上操作

  本文的配置工具VS code就是一个编辑器不含编译器、链接器等,所以要运行代码还需要安装其他工具。这也就是为什么VScode巨坑的原因,虽然官方提供了各种工具,但是我们还是需要自己安装与配置!

三、配置环境

Windows 7 x64
OpencCV3.3
cmake3.9 x64
Mingw x64

四、VScode搭建C/C++环境

4.1安装VScode+Mingw64

进入VS code官网下载对应版本的安装包(注意系统是x86还是x64),具体安装步骤就不重述了。
在这里插入图片描述
2、下载MinGW-64(Minimalist GNUfor Windows,Windows特定头文件和使用GNU工具集导入库的集合),简单来说就是MinGW是一个支持gcc编译功能、gdb调试功能的开发环境。
在这里插入图片描述
上图所示,我下载的是GCC-8.1x64版本(最新版本),当然你也可以下载其他版本MinGW,解压后放在C盘(一般与系统操作相关的软件最好都放在C盘~),将Path添加到系统环境变量:
在这里插入图片描述
WIN+R->cmd或者在控制面板中打开命令提示符(就是那个Dos命令黑框框),测试一个MinGW是否添加成功,若添加成功则可以调用Debug工具:
在这里插入图片描述
这里输入命令 g++、gcc、gdb是测试编译器和调试器,如图所示没有提示输入命令错误就代表没问题!

下面我们打开VS code添加一些必要的插件!

4.2添加扩展工具

1、中文(简体语言包)
在这里插入图片描述
重启VScode后就会变成简体中文版。
2、C/C++编译工具
在这里插入图片描述
完成后,我们就可以编辑一段C++代码并调试!

4.3C/C++编译与调试

主要完成:

  • launch.json文件配置
  • Task.json文件配置

具体过程是在桌面新建一个文件夹,右键选择: —>通过Code打开,然后在VS code中新建一个文档:HelloWorld.cpp,编辑一段代码
New
这时我们只是完成了源码编辑,按F5调试会提示创建launch.json脚本文件,或者在左侧调试栏创建launch.json文件(父目录:.vscode自动创建)
在这里插入图片描述
我们写的是C++文件,所以选择g++(gdb)选项–>选择"g++.exe build active file",然后编辑launch.json文件如下:
在这里插入图片描述
这里,我们只需要关注“Configuration”下面三个参数:

参数解释
program指明debug时运行哪个程序,默认与被编译文件同名的.exe文件
MIModedebug工具,Win10环境下是MinGW
miDebuggerPathgdb.exe安装路径

【注】这里的miDebuggerPath修改为你自己gdb.exe所在路径!
创建launch.json后,还需要创建Task.json文件,按Ctrl+Shift+P调出命令面板,搜索Task:
在这里插入图片描述
创建并编辑Task.json文件参数:
在这里插入图片描述
“label”必须设置为preLaunchTask的值(preLaunchTask在launch.json文件最后一行);“command”为g++编译器路径(这里也可以写g++),另外需要在可选参数“args”中添加:"-std=c++17"(或"-std=c++11")表示设置c++标准为c++17(c++11)。
【注】launch.json和Task.json文件串联执行launch中preLaunchTask调用Task,所以参数值需设置成同一参数!详细可参考B站视频:【VS Code 搭建轻量美观的 C/C++开发环境】

以上就完成了VS code对C/C++编译环境的配置,真正困难的是OpenCV配置!下面我们利用cmake配置OpenCV…

五、OpenCV+cmake配置

配置之前我思考过两件事情:

  • 可不可以不创建cmake,只通过修改launch、task等文件添加OpenCV。
  • 有没有通过cmake编译和装载完成的OpenCV库可直接使用。

  对于方案一:经过了解和查阅资料,我发现OpenCV中包含了大量源文件和链接库文件并没有.obg目标文件或.exe可执行文件,也就是说我们并不能直接调用OpenCV库函数!必须使用像Cmake这样一个转换工具,将OpenCV源码自动转化为Makefile文件然后编译为系统环境下的可执行文件。至于Makefile是什么怎么生成的不做讨论可参考Blog:CMake是什么?有什么用?
  对于方案二:从二中(编译过程)可知,源码生成可执行文件,需要编译器和链接器(gcc/g++/gdb),所以cmake过程需要选择自己MinGW中gcc和g++编译器,而每个人的MinGW安装路径不同,所以编译和装载别人配置好的Makefile是不现实的!

综上,我们还是要配置自己的OpenCV编译环境!

5.1下载Cmake

在CMake官网下载cmake3.9.0-win64-x64(最新版是3.17)解压放到C盘(Makefile创建于系统有关,放在其他盘会安装失败)
在这里插入图片描述
将binary文件路径添加到系统路径(根据自己安装位置):

C:\cmake3.9\cmake-3.9.0-rc3-win64-x64\bin

在这里插入图片描述
运行cmd输入>cmake --version查看cmake是否安装成功
在这里插入图片描述
显示版本号则cmake安装成功!下面编译cmake

5.2编译装载Makefile

1、运行 …/cmake-3.9.0-rc3-win64-x64\bin\cmake-gui.exe
在这里插入图片描述
Makefile解析和安装路径设置为:

where is the source code: E:\opencv3.4\opencv\sources
where to build the binaries: E:\opencv3.4\opencv\build\x64\MinGW

【注】MinGW是opencv/build/x64路径下新建空文件夹

2、点击 configure ,继续配置
在这里插入图片描述
选择MinGW Makefile文件,即将源码编译为Makefile文件。
3、选择MinGW 中的 C 和 C++ 编译的exe程序
在这里插入图片描述
选择自己mingw64安装路径C/C++编译器路径,我的是:

C编译器: C:\mingw64\bin\gcc.exe
C++编译器: C:\mingw64\bin\g++.exe

4、完成MinGW中Makefile文件配置
设置完毕点击Finish,等待进度条读完,直到输出窗口看到 Configuring done。再次点击 Configure 等待进度条读完。之后点击Generate 等待进度条读完,出现Generating done。即完成文件配置!
在这里插入图片描述
我们打开刚创建的MinGW空文件,会发现新增许多Makefile文件证明创建成功。
在这里插入图片描述
5、编译Makefile并装载
Win+R>cmd打开命令控制行cd到MinGW文件夹:E:\opencv3.4\opencv\build\x64\MinGW,输入 minGW32-make命令,这个过程需要等待大约1个小时编译成功,
在这里插入图片描述
编译完成之后,输入 >minGW32-make install 来完成装载。
在这里插入图片描述
以上就完成了cmake对OpenCV的编译过程,并把目标文件和可执行文件install在MinGW文加下。
6、添加MinGW bin路径
本文路径为:

E:\opencv3.4\opencv\build\x64\MinGW\bin

在这里插入图片描述
编译过程有时会报错,这会是由于cmake与mingw64版本不匹配所致,本文已验证Cmake3.9+mingw64_8.1+opencv3.4在64位Win7系统中成功运行!按照以上版本安装即可

5.3opencv项目配置

首先新建一个opencv_c的文件夹用来保存OpenCV源文件,按照4.3过程只需修改三个脚本文件:

  • launch.json
  • Tasks.json
  • c_cpp_properties.json

右键文件夹,使用VS code打开,新建一个testopencv.cpp源文件,编辑一段代码:

#include<opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main()
{
    Mat img=imread("C:/Users/Administrator/Desktop/beauty.jpg");
    Size dsize = Size(round(0.3 * img.cols), round(0.3 * img.rows));//Size型 改变尺寸
    resize(img, img, dsize, 0, 0, INTER_LINEAR); //使用双线性插值缩放一下尺寸
    cv::imshow("beauty",img);
    cv::waitKey();
    return 0;
}
}

首先按F5调试,会自动生成launch.json文件,由于是c++代码,我们选择"g++.exe build active file"(g++编译器),编辑代码:
在这里插入图片描述
这里"miDebuggerPath"选择自己的gdb.exe安装路径。我的是:C:\mingw64\bin\gdb.exe。
然后,生成并编辑c_cpp_properties.json文件,这里有两种生成方法:

  1. 在.vscode 文件夹(launch.json 的父目录)下,新建 c_cpp_properties.json文件;
  2. Ctrl+Shift+P打开命令面板,输入>c/c++ Edit,选择Edit Configuration(JSON)即可创建c_cpp_properties.json文件。

在这里插入图片描述
在c_cpp_properties.json中添加opencv头文件路径:

“E:/opencv3.4/opencv/build/include”,
“E:/opencv3.4/opencv/build/include/opencv”,
“E:/opencv3.4/opencv/build/include/opencv2”

在这里插入图片描述
最后,生成并编辑Tasks.json文件,这里有两种生成方法:

  1. 在.vscode 文件夹(launch.json 的父目录)下,新建 Tasks.json文件;
  2. Ctrl+Shift+P打开命令面板,输入>Task,选择 Configuration Task即可创建Tasks.json文件。

在这里插入图片描述
在Tasks.json中添加opencv头文件、库文件以及MinGW库文件路径:

"-I", "E:/opencv3.4/opencv/build/include",
"-I", "E:/opencv3.4/opencv/build/include/opencv",
"-I", "E:/opencv3.4/opencv/build/include/opencv2",
"-L", "E:/opencv3.4/opencv/build/x64/MinGW/lib",
"-l", "opencv_core345",
"-l", "opencv_imgproc345",
"-l", "opencv_imgcodecs345",
"-l", "opencv_video345",
"-l", "opencv_ml345",
"-l", "opencv_highgui345",
"-l", "opencv_objdetect345",
"-l", "opencv_flann345",
"-l", "opencv_imgcodecs345",
"-l", "opencv_photo345",
"-l", "opencv_videoio345"

如图所示:
在这里插入图片描述
命令面板创建launch.json、Tasks.json、c_cpp_properties.json文件是,最后将鼠标定位到.cpp文件,不然创建的json文件会报错,因为他们是对于同一个.cpp文件串联执行的!

  此时就完成了OpenCV在VS code中的配置,下面就可以愉快的测试了。

六、测试

6.1C/C++代码测试

在这里插入图片描述
运行成功!另外控制台显示可以在launch.json文件设置

externalConsole": true //True表示调用外部控制台,False是不调用

6.2OpenCV代码测试

在这里插入图片描述
  测试完成!感觉VS code运行速度也没有理想中的那么快,可能和电脑配置有关系吧~

目前就更新到这里,有问题的小伙伴自行百度,或参考下方博客!

七、参考博客:

【1】vscode 配置OpenCVC编译环境
【2】将 VSCode 打造成 OpenCV 的 IDE(C++,window10 1803)
【3】visual studio code(vscode) c++ 编译opencv并运行调试
【4】c++ 编译OpenCV-3.3.0过程及遇到的问题

  • 36
    点赞
  • 229
    收藏
    觉得还不错? 一键收藏
  • 41
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值