下载cmake,选择免安装的版本,并将解压后的cmake-3.22.2-windows-x86_64\bin
目录添加到环境变量
下载gcc调试器,选择x86_64-posix-seh
,并将解压后的x86_64-8.1.0-release-win32-seh-rt_v6-rev0\mingw64\bin
目录添加到环境变量中
在cmd中输入
gcc --version
cmake -version
没有提示找不到就算成功
创建一个简单的c++工程,文件目录如下
.
├── build
├── CMakeLists.txt
├── include
│ └── swap.h
├── src
│ └── swap.cpp
└── main.cpp
CMakeLists.txt
不懂cmake规则可以百度一下
cmake_minimum_required(VERSION 2.8)
project(shoot)
include_directories(include)
file(GLOB SRC "src/*.cpp")
add_executable(shoot main.cpp ${SRC})
set(CMAKE_BUILD_TYPE debug)
main.cpp
#include
#include "swap.h"
using namespace std;
int main()
{
SWAP swap(1, 2);
swap.print_info();
swap.run();
swap.print_info();
}
swap.h
#pragma once
#include
class SWAP
{
private:
int _a;
int _b;
public:
SWAP(int a, int b)
{
this->_a = a;
this->_b = b;
}
void run();
void print_info();
};
swap.cpp
#include"swap.h"
using namespace std;
void SWAP::run()
{
int temp;
temp = _a;
_a = _b;
_b = temp;
}
void SWAP::print_info()
{
cout<<"a = "<<_a<<" b = "<<_b<<endl;
}
这一步可以跳过,只是为了表示vscode只是一个编辑和调用工具
进入build目录,输入
cmake -G "MinGW Makefiles" ..
进行makefile文件的构建,添加G "MinGW Makefiles"是因为如果你装了vitual studio,会默认使用MSVC编译器,这里强制使用gcc。
然后输入
mingw32-make.exe
显示
就表示代码构建成功,此时build文件夹下面会有shoot.exe,运行就可以得到期望的结果
本质上,vscode就是调用cmake进行项目的构建,所以,令人头疼的launch.json
与tasks.json
其实也就只是调用cmake进行项目的编译,然后调用gdb进行代码的调试而已。
创建.vscode文件夹
launch.json
{
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"windows": {
"MIMode": "gdb",
"miDebuggerPath": "gdb.exe",
"program": "${workspaceFolder}/build/main" // 重要的是这里,生成的可执行文件的路径,改自行修改
},
"preLaunchTask": "make"
}
]
}
tasks.json
tasks.json就是纯纯的调用cmake进行构建,在命令行中执行步骤5说的两个语句
{
"version": "2.0.0",
"options": {"cwd": "${workspaceFolder}/build"},
"tasks": [
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
"-G \"MinGW Makefiles\"",
".."
]
},
{
"label": "make",
"command": "mingw32-make.exe",
},
{
"label": "build",
"dependsOrder": "sequence", // 按列出的顺序执行任务依赖项
"dependsOn":[
"cmake",
"make"
],
}
]
}
修改快捷键
在编辑框输入tasks.build,修改快捷键为f4
此时,就能使用f4
进行makefile的重新建立(如果修改了CMakeLists.txt),f5
进行编译调试
返回main.cpp,随便打一个断点,测试是否正常
正常调试与运行,完成。
linux下与windows下大同小异,不同的地方就只有gcc与cmake的安装,vscode的两个配置文件的区别
可以在建立后工程后点击这个自动生成launch.json
与tasks.json
(默认都选第一项,会报错不要管)
然后将launch.json
中的可执行程序替换成camke生成的
tasks.json
tasks.json不同的地方时用make
而不是mingw32-make.exe
{
"version": "2.0.0",
"options": {"cwd": "${workspaceFolder}/build"},
"tasks": [
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
".."
]
},
{
"label": "make",
"command": "make",
},
{
"label": "build",
"dependsOrder": "sequence", // 按列出的顺序执行任务依赖项
"dependsOn":[
"cmake",
"make"
],
}
]
}
这样,就可以愉快地在vscode上进行c++的编写与调试了