目录
一、前言
由于今年疫情影响,很多计划内的事情都泡汤了,鉴于下学期找工作需要,决定自己在家学习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编辑器
本文所使用的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.4
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调试功能的开发环境。
将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,编辑一段代码
这时我们只是完成了源码编辑,按F5调试会提示创建launch.json脚本文件,或者在左侧调试栏创建launch.json文件(父目录:.vscode自动创建)
我们写的是C++文件,所以选择g++(gdb)选项–>选择"g++.exe build active file",然后编辑launch.json文件如下:
这里,我们只需要关注“Configuration”下面三个参数:
| 参数 | 解释 |
|---|---|
| program | 指明debug时运行哪个程序,默认与被编译文件同名的.exe文件 |
| MIMode | debug工具,Win10环境下是MinGW |
| 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++编译环境的配置,下面我们利用cmake配置OpenCV…
五、OpenCV+cmake配置
待续…
六、测试
1、C/C++代码测试
运行成功!另外控制台显示可以在launch.json文件设置
“externalConsole”: true //True表示调用外部控制台,False是不调用
参考博客:
【1】vscode 配置OpenCVC编译环境
【2】将 VSCode 打造成 OpenCV 的 IDE(C++,window10 1803)
【3】visual studio code(vscode) c++ 编译opencv并运行调试
【4】c++ 编译OpenCV-3.3.0过程及遇到的问题