博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vscode通过ssh远程配置c++编译及调试(多文件)
阅读量:4096 次
发布时间:2019-05-25

本文共 1879 字,大约阅读时间需要 6 分钟。

1、下载插件c/c++

在这里插入图片描述

2、创建文件夹

在这里插入图片描述

其中:
cpp用来存放cpp源码
fill用来存放生成的可执行文件
include用来存放头文件
test.cpp为主函数入口,放在最外面,方便点击。

3、编写源代码

在编写主函数之前,我们先来创建一个头文件和其对应的源文件:

在这里插入图片描述
在include中创建一个名为test.h的头文件
在cpp中创建一个名为te.cpp的与之对应的源文件
这里之所以不将两者名字取为一样,主要是想在配置过程中讲的更清楚一点。


在te.cpp中写一个两数求和的代码:

#include"iostream"int he(int a,int b){
return a+b;}

在这里插入图片描述

在test.h的头文件中,进行声明:

int he(int a,int b);

在这里插入图片描述

在主函数中写入如下测试代码:

#include
#include "test.h"using namespace std;int main(){
std::cout << he(3,7)<< std::endl; return 0;}

到现在为止我们已经将所有的代码准备工作做好了,下面来配置编译器以及调试器

4、配置编译器调试器

点击终端:

在这里插入图片描述
在点击里面的配置任务选项,会弹出如下界面:
在这里插入图片描述
选择一个g++编译器,这里我选择了/usr/bin/g++这个,然后点击它,此时会自动创建一个.vscode的文件夹,里面有个tasks.json的文件,打开它,我们开始在里面去配置我们的cpp文件路径和头文件路径,以使编译器能找到:
打开之后如下图:

在这里插入图片描述

其中1出不用管,这是他系统生成的,指的是当前主函数的入口文件,在这里也就是我们的test.cpp文件
其中2处是我们自己加的,这一行要讲我们的cpp文件路径写进去,因为我所有的cpp文件都放在cpp文件夹下,因此,写入该文件夹的路径(可以是相对路径)
其中3处我们需要修改一下,他原本生成的是这样的"${fileDirname}/${fileBasenameNoExtension}",,这句话的意思就是在当前目录下生成可执行文件,这里我们要将其可执行文件放在fill目录下,就需要定位到该目录,因此我这里在${fileDirname}后面添加=了fill
其中4是使我们自己加的,应为为我们将所有的头文件都放在了include目录下,而系统并不知道,因此
我们需要通过-I选项进行自己指定头文件
其中5表示头文件路径
这里配置完成之后,就可以运行了,但是还不能调试,应为我们还没有配置gdb调试工具,下面进行调试工具配置:


点击运行按钮:

在这里插入图片描述
在点击里面的添加配置这一项:会弹出如下界面,叫我们选择GDB工具
在这里插入图片描述
这里我选择第一个linux的,接着会出现如下界面:
在这里插入图片描述
接着会叫我们选择编译器,我们还是选择之前我们选择的那个usr/bin/g++
此时会在.vscode中生成launchg.json的文件,打开它,如下:
在这里插入图片描述
我们只需要配置1处问配置项即可,这里我需要在${fileDirname}后面添加一级fill,应为我们的可执行文件是存放在fill里面的,这里需要指定到该目录。
上面配置完成之后就可以进行调试了:

5、测试

在主函数中打入一个断点。

在这里插入图片描述
然后按下快捷键,ctrl+F5即可进入调试环节:如下

在这里插入图片描述

1处为调试的选项
2处显示变量的值,因为这里没有变量,所有没有显示出来。
到这里基本调试环节就配置完成了
下面还需要配置一个vscode搜索路径,因为上面的配置仅仅是使用的linux的编译器来进行编译和调试,但是在vscode下,我们如果想让vscode添加其他的头文件并能检查语法错误,此时我们还需要为vscode配置一个头文件搜索路径

6、配置vscode头文件搜索路径

按下ctrl+shift+p打开控制面板,输入c/c++选择如下配置项:

在这里插入图片描述
此时会在.vscode中生成一个名为c_cpp_XXX.json的文件,打开它,如下:
在这里插入图片描述
1处为vscode头文件搜索路径,因为这里是" w o r k s p a c e F o l d e r / ∗ ∗ " , 在 {workspaceFolder}/**",在 workspaceFolder/"{workspaceFolder}/后面有两个**表示递归搜索,因为我们的头文件就在test的include目录下,因此,可以搜索到,但是若我们的头文件不在该项目下,而在其他地方,我们就需要早在这里进行手动指定头文件搜索路径。

转载地址:http://rctii.baihongyu.com/

你可能感兴趣的文章
外部类为abstract时,出错记录。
查看>>
java变量
查看>>
equals:注意Sting类型和非String类型的比较
查看>>
Animal[] animals = new Animal[2];
查看>>
New Date();报错
查看>>
XML - -DOM解析
查看>>
DOS命令行窗口mysql显示乱码问题处理
查看>>
MySQL数据库备份与恢复
查看>>
直接双击启动tomcat中的startup.bat闪退原因及解决方法
查看>>
response.sendRedirect()与request.getRequestDispatcher().forward()区别
查看>>
Java Socket技术总结
查看>>
单列模式-编写类ConfigManager读取属性文件
查看>>
java中float和double的区别
查看>>
Statement与PreparedStatement区别
查看>>
Tomcat配置数据源步骤以及使用JNDI
查看>>
before start of result set 是什么错误
查看>>
MyEclipse 提示设置 JSP XML 自动提示
查看>>
(正则表达式)表单验证
查看>>
jsp...
查看>>
网页代码中用<%=request.getContextPath()%>和不用的区别?
查看>>