编程小白跟着b站视频手把手教会VSCode的C++环境搭建,多文件编译,Cmake,json调试配置( Windows篇)在Ubuntu下的VSCode进行多文件编译,Cmake,json调试配置的一点笔记
1.前期的环境配置在装Ubuntu的时候就直接装了,这一部分略过
2.简单的单文件编译步骤:
(1)新建文件:先新建文件夹(VSCode是以文件夹为项目打开)→资源管理器→右键,新建文件,直接写上文件名.文件类型,这里设定为main.cpp
#include
using namespace std;
void swap(int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main(int argc,char **argv)
{
int val1 = 10;
int val2 = 20;
cout << "before swap:" << endl;
cout << "val1=" << val1 << endl;
cout << "val2=" << val2 << endl;
swap(val1,val2);
cout << "After swap:" << endl;
cout << "val1=" << val1 << endl;
cout << "val2=" << val2 << endl;
return 0;
}
(2)g++编译,Ubuntu命令:
g++ main.cpp
会生成一个随机的.out文件
g++ -g main.cpp -o my_single_swap
指定生成的.out文件的名字为my_single_swap
(3)json文件配置:Ubuntu和windows不一样,Ubuntu需要自己编辑,这一部分参考在ubuntu系统下的vscode环境中配置C++环境
将原本的launch.json文件内容全部删除替换成以下内容
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
然后运行→启动调试(也可以直接F5)→会跳出找不到任务'build'的窗口,点击配置任务→点击第一个使用模板创建tasks.json文件→然后选择最后一个Others运行任意外部命令的实例,就会生成一个tasks.json文件
同样将tasks.json里面的代码全部删除,换成如下内容
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": ["-g", "${file}", "-std=c++11", "-o", "${fileBasenameNoExtension}.out"]
}
]
}
然后点击main.cpp就可以进行调试(记住调试前要先保存文件,不然就会报错)
2.多文件编译:
(1)新建文件
main.cpp
#include
#include "swap.h"
using namespace std;
int main(int argc,char **argv)
{
int val1 = 10;
int val2 = 20;
cout << "before swap:" << endl;
cout << "val1=" << val1 << endl;
cout << "val2=" << val2 << endl;
swap(val1,val2);
cout << "After swap:" << endl;
cout << "val1=" << val1 << endl;
cout << "val2=" << val2 << endl;
return 0;
}
swap.h
void Swap(int &a,int &b);
swap.cpp
#include "swap.h"
void Swap(int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
同时编译两个.cpp文件
g++ -g main.cpp swap.cpp
自己设置输出文件名
g++ -g main.cpp swap.cpp -o my_multi_swap
(2)配置.json文件,和上述一样
(3)Cmake编译:生成极为复杂的makefile
新建CMakeLists.txt (教程写了一个最简单的cmake指令)
project(MYSWAP)
add_executable(my_cmake_swap main.cpp swap.cpp)
ctrl+shift+p,选择Cmake:Configure
选择GCC 的编译器,不同版本号可能不一样,教程是8.1,我是8.4
之后会建成一个build文件夹
这里的build文件也可以自己新建,代码如下
mksir build
进入终端
cd build
cmake ..
出现
说明所有步骤都正常
然后进行make编译,windows系统下是
mingw32-make.exe
Ubuntu下是
make
出现
即为成功,会在build文件夹中出现
重新配置launch.json文件,将文件中“program”路径从如下内容
改为
然后对main.cpp文件重新调试,调试成功生成可执行文件的流程就结束了。
补充:
1.如果此时修改main.cpp的内容,此时调试内容仍然是修改之前的代码,得重新生成可执行文件才可以执行新代码
2.一些对应关系:
这时候如果修改main.cpp内容,就可以直接进行调试,不用先编译再调试
3.将这一部分命令直接编入task.json中,就不用每次修改后重新编译
修改后的task.json文件:windows版:
Ubuntu: