这篇文章是通过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"
}

linux下vscode配置c++,使其和Visual Studio2019一样调试相关推荐

  1. vs在linux下的环境搭建,linux下vscode环境配置

    文章目录 linux下vscode环境配置 编译器,调试器安装 sudo apt update #通过以下命令安装编译器和调试器 sudo apt install build-essential gd ...

  2. 保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建

    保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建 写在前面 配置VSCode的编译环境 配置VSCode的gdb调试环境 配置 ...

  3. linux下安装配置redis服务

    2019独角兽企业重金招聘Python工程师标准>>> linux下安装配置redis服务 2016年03月25日 15:39:31 coding_everyday 阅读数:3530 ...

  4. Linux下安装配置vsftpd

    Linux下安装配置vsftpd 安装vsftpd服务器 yum -y install vsftpd 可以使用rpm -qa vsftpd命令确认是否安装好vsftpd服务器. vsftpd.conf ...

  5. Linux 下安装配置 JDK7

    Linux 下安装配置 JDK7 配置环境(debian 7) 自从从Oracle收购Sun近三年来,已经有很多变化.早在8月,甲骨文将"Operating System Distribut ...

  6. redhat linux 禁用网卡,RedHat Linux下防火墙配置技巧

    RedHat Linux下防火墙配置技巧 发布时间:2012-07-13 16:34:57   作者:佚名   我要评论 RedHatLinux为增加系统安全性提供了防火墙保护.防火墙存在于你的计算机 ...

  7. Ubuntu下VScode配置ssh免密远程登录

    一 实现步骤 1.在本机与远程服务器上, 输入ssh-keygen -t rsa,然后连续回车直到结束 2.在本机上执行命令 ssh-copy-id 命令 (1).命令介绍 ssh-copy-id命令 ...

  8. 使用oracle安装jdk1.7,【Java】Linux下安装配置Oracle JDK 1.7版本

    1 环境 Vmware虚拟机中的Ubuntu 12.04 32位系统 2具体安装步骤 ①下载最新的jdk包 注意jdk区分32位版本和64位版本,要与Ubuntu兼容才行 下载地址 http://ww ...

  9. 十六、windows11下VSCode配置C/C++编译环境

    十六.windows11下VSCode配置C/C++编译环境 1.安装VSCode 2.中文插件 3.MinGW编译器下载和配置 4.VSCode配置c/c++编译环境 5.测试是否配置成功 6.使用 ...

最新文章

  1. AS3.0编程 So本地数据存储(“超级cookies”)--AS3:Local SharedObject
  2. 【书评:Oracle查询优化改写】第14章 结尾章
  3. 快手开源斗地主AI,入选ICML,能否干得过「冠军」柯洁?
  4. 云计算带来企业管理的革命
  5. ie6 ie7 绝对定位 相对定位 层被遮住
  6. 去掉linux开关机图片,在Deepin Linux系统下去掉NVIDIA开机Logo的方法
  7. endnotex9如何导入caj中文文献_EndNote系列教程(二)——数据库的建立及文献的筛选...
  8. Jira 的 数据库备份恢复 简单过程
  9. Channel Allocation HDU1373
  10. 增强中获取屏幕值的一句很实用代码…
  11. go 调用c语言,golang之调用C语言代码
  12. mfc切换office样式_干货搬运工|计算机二级office必读,裸考也能通关的宝典
  13. Servlet-HttpServletRequestWrapper
  14. Eclipse的工作空间与项目
  15. 人脸识别及数据流处理
  16. Android USB电源管理
  17. 图片怎么压缩成指定大小?怎么能把图片压缩到200k?
  18. 自然语言处理入门 第一章 新手上路
  19. 大数据——DBT:dbt集成数据质量监控插件elementary(生产环境篇)
  20. 计算机适合用mac吗,原神能用苹果电脑玩吗

热门文章

  1. RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility.
  2. 大数据分析系统包含哪些功能板块
  3. 如何挑选大数据分析平台
  4. 大数据分析平台如何进行支出跟踪
  5. 大数据技术的表现形式有哪些
  6. 大数据分析平台有哪些功能
  7. C++算法学习(力扣:1122. 数组的相对排序)
  8. 计算机口令管理,农村信用社联合社计算机账户与口令管理办法
  9. 小沙的步伐(枚举+暴力)
  10. AcWing 829. 模拟队列