linux下vscode配置c++,使其和Visual Studio2019一样调试
这篇文章是通过Makefile命令的形式进行配置的,这对大工程不友好,因此写了一篇vscode联合cmake进行环境配置,大家可以看这篇文章
linux下c++编译的方式
在win下visual studio为我们进行了大量的封装,同时设计了大量的容易操作的配置和界面,使得开发人员不过太过关注底层的编译链接过程,只需要关注代码本身即可,提升了开发的效率,但是在linux下就不一样了,linux下的编译和链接需要我们自己动手做,因此你会发现linux下会有很多种方式进行编译链接,这样只聊三种集Makefile、cmake和vscode:
Makefile
这里来源不介绍了,直接给教程,可以看这篇文章
cmake
cmake算是对Makefile的进一步的封装,使开发人员,不用花费大量的时间花在写Makefile上,只需要简单的几个命令即可完成编译链接操作,详细的教程可以看看我前几篇文章,也可以看看其他人的文章,不难理解
VScode c++环境配置
虽然Makefile和cmake都可以完成c++的编译链接操作,但是因为在win开发用的vs2019的ide,比较喜欢在ide上进行编译链接和调试,那么最好的ide就是vscode,vscode不是针对c++的编译器,可说他是一个工具,可定制的编程ide工作,那么想要达到我的目的我就需要对其进行配置,使其和vs2019那样,如何操作呢?接下来将详细介绍如何配置:
1. 项目说明
该实验项目是需要依赖opencv的库,也有多个源码cpp文件,通过main进行调用,那么就需要配置vscode使其支持多文件的编译和链接,同时支持依赖外部库,话不多说,这里开始工作,文件的目录结构如下:
上面的cmakelists.txt和build文件夹,大家不用理会,那是使用cmake操作的,目录只包含src和根目录的main.cpp,src的源文件依赖opencv,同时src存在大量的cpp文件。
2. 配置vscode环境
第一步你应该了解vscode配置c++环境时需要的三个文件分别是:tasks.json、launch.json、c_cpp_properties.json,这个三个文件,关于这三个文件可以看看这篇文章,网上其他的文章大多数都是hello word,这种配置很简单的,但是复杂的是多文件、多文件和多目录下面的文件编译和调试配置,这里将详细介绍,首先你需要明白的是无论是cmake还是vscode还是其他最终都是通过Makefile进行编译链接的,而不同之处在于他们进一步对Makefile进一步的封装,因此我们配置vscode的其实也是配置Makefile的命令而已,理解到这一步就好做了,
先看看c_cpp_properties.json这个文件:
这个文件的最大作用是包含头文件, 使你在编写c++是能够找到函数,代码会高亮不会出现波浪形提示,因此这里应该添加你的外部库的头文件,如opencv的头文件等
launch.json文件
该文件主要是添加gdb调试任务
tasks.json文件
这个文件很重要,他是编译链接的主要配置文件,通常如果有多个文件夹直接澡-g后面把源文件目录添加进来即可,可以是.cpp和.c文件,然后采用通配符的方式自动添加即可,如果依赖第三方库在后面直接添加即可,其中:
-I (大写i)是包含目录的意思
-L是包含库目录的意思
-l (L小写)是链接库的意思
还有很多命令都可以通过这里添加,这样需要去研究Makefile的命令,因为上面的命令都是Makefile的命令。
调试画面:
跟踪到源码
方便大家使用:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ 生成活动文件",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-std=c++11",
"-g",
"${file}",
"${fileDirname}/src/*.cpp",
//"${fileDirname}/*.c",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
// 设置动态链接库
"-I", "/usr/local/include",
"-I", "/usr/local/include/opencv2",
"-I", "/usr/local/include/opencv",
"-L", "/usr/local/lib",
"-l", "opencv_videoio",
"-l", "opencv_ml",
"-l", "opencv_videostab",
"-l", "opencv_features2d",
"-l", "opencv_calib3d",
"-l", "opencv_video",
"-l", "opencv_superres",
"-l", "opencv_objdetect",
"-l", "opencv_flann",
"-l", "opencv_dnn",
"-l", "opencv_stitching",
"-l", "opencv_imgproc",
"-l", "opencv_highgui",
"-l", "opencv_photo",
"-l", "opencv_core",
"-l", "opencv_imgcodecs",
"-l", "opencv_shape",
],
"options": {
//"cwd": "${fileDirname}"
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
更多推荐
所有评论(0)