目录
五.配置launch.json和tasks.json文件用于调试
一.安装VScode、CMake、MinGW
自行安装
二.VScode安装插件
三.创建一个文件夹用于测试
项目结构:
calc.h
#ifndef CALC_H
#define CALC_H
#include <iostream>
using namespace std;
void add(int a,int b);
void mul(int a,int b);
void divi(int a,int b);
void sub(int a,int b);
#endif //CALC_H
add.cpp
#include "calc.h"
void add(int a,int b)
{
cout <<"a+b="<<a+b<<endl;
}
divi.cpp
#include "calc.h"
void divi(int a,int b)
{
cout <<"a÷b="<<a/b<<endl;
}
mul.cpp
#include "calc.h"
void mul(int a,int b)
{
cout <<"a*b="<<a*b<<endl;
}
sub.cpp
#include "calc.h"
void sub(int a,int b)
{
cout <<"a-b="<<a-b<<endl;
}
main.cpp
#include <iostream>
#include "calc.h"
int main()
{
cout<<"hello calculator "<<endl;
int a = 10;
int b = 5;
cout<<"a="<<a<<", b="<<b<<endl;
add(a,b);
mul(a,b);
sub(a,b);
divi(a,b);
}
基于g++编译测试:
1.在test文件夹下打开终端输入命令,生成.exe文件
g++ ./src/*.cpp main.cpp -o calc -I ./include/
2.执行.exe文件
./calc.exe
四.基于CMake编译测试
1.在test目录下创建CMakeLists.txt
CMakeLists.txt
#设置cmake最低版本限制
cmake_minimum_required(VERSION 3.10)
#设置项目名称
project(calc)
#设置包含的头文件目录,可设置多个目录,目录间用空格隔开
include_directories(include)
#aux_source_directory(dir VAR),搜索dir目录下的源文件,并将结果列表存储在变量VAR中
aux_source_directory(src SRC_DIR)
aux_source_directory(. CUR_DIR)
#add_executable(target src),指定使用源文件生成可执行程序target,${变量名}表示取变量值
add_executable(calc ${SRC_DIR} ${CUR_DIR})
2.在test目录下创建build文件夹,进入build目录执行命令:
cmake ..
可以看到build目录下生成了一系列文件,其中包括Makefile文件
4.输入命令
mingw32-make.exe
可以看到生成了calc.exe文件,运行可得到同样效果
五.配置launch.json和tasks.json文件用于调试
1.点击窗口右上角的齿轮,选择点亮选项,会在test目录下生成一个.vscode文件夹,该目录下生成了两个文件launch.json和tasks.json
tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "E:\\tools\\QT\\QT\\Tools\\mingw1310_64\\bin\\gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
launch.json
{
"configurations": [
{
"name": "C/C++: gcc.exe 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "E:\\tools\\QT\\QT\\Tools\\mingw1310_64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe 生成活动文件"
}
],
"version": "2.0.0"
}
修改tasks.json和launch.json的内容
tasks.json
{
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build/" //进入build目录下
},
"tasks": [
{
//task1:使用cmake命令生成Makefile文件
"label": "cmake",
"type": "shell",
"command": "cmake",
"args": [
".."
]
},
{
//task2:使用mingw32-make.exe命令基于Makefile文件构建当前项目
"label": "make",
"group":{
"kind":"build",
"isDefault":true
},
"command": "mingw32-make.exe",
"args":[
]
},
{
//任务集合:说明要执行的任务,作为 launch.json中 preLaunchTask配置项
"label":"Build my project",
"dependsOn":[
"cmake",
"make"
]
}
]
}
launch.json
{
"configurations": [
{
"name": "C/C++: gcc.exe 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/calc.exe",//对应tasks.json文件执行后生成的exe程序路径
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "E:\\tools\\QT\\QT\\Tools\\mingw1310_64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "Build my project" //名称与tasks.json中任务集合的label相同
}
],
"version": "2.0.0"
}
2.json文件配置成功,在main.cpp加上断点,点击窗口左下角甲壳虫进行调试,
结果图:
参考:B站:爱编程的大丙