IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> linux下vscode配置c++,使其和Visual Studio2019一样调试 -> 正文阅读

[开发工具]linux下vscode配置c++,使其和Visual Studio2019一样调试

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"
}

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:15:04  更:2021-12-07 12:15:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:45:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码