【Windows】VSCode中的C++开发和调试
1.下载安装Mingw-w64和cmake
官网(速度可能比较慢):
或
链接: https://pan.baidu.com/s/1rgPcvq1ePNn44FiQk_tN9w
提取码: g69w
这里我是去官网下的新版
致谢UP主 xiaobing1016(网盘链接提供者):手把手教会VSCode的C++环境搭建,多文件编译,Cmake,json调试配置( Windows)
安装教程自行百度,
安装完成后根据安装目录配置环境变量,如果是从百度网盘下载的就直接找解压缩目录
最后打开cmd测试是否安装成功,输入gcc -v
、g++ -v
和cmake --version
2. vscode下载安装
正常安装即可…
c++开发需要的插件:
- c/c++(代码提示、调试)
- cmake
- cmake tools
3. 配置json文件,开始调试功能
新建项目文件夹test,文件test.cpp
输入code .
打开vscode
生成lanuch.json
文件,以下三步走
完事儿会发现task.json
也自动生成了,其中
"preLaunchTask": "C/C++: g++.exe build active file"
的作用是在调试之前生成可执行文件,生成可执行文件的任务就是task.json
打上断点,按下F5
即可开始单文件调试…
4.多文件调试
当前文件有三个:
main.cpp
:
#include"include/test.h"
int main()
{
test();
return 0;
}
test.cpp
:
#include"include/test.h"
using namespace std;
void show()
{
cout << "This is show function!" << endl;
}
int test()
{
cout << "This is a test file!" << endl;
show();
return 0;
}
test.h
:
#pragma once
#include<iostream>
void show();
int test();
终端中输入多文件编译指令:
g++ -g .\main.cpp .\src\test.cpp -o multi_file
生成multi_file.exe
文件
更改launch.json文件,
其中"${workspaceFolder}"
代表当前工作目录的绝对路径,
更改调试程序文件路径:"program": "${workspaceFolder}/multi_file.exe"
屏蔽 "preLaunchTask": "C/C++: g++.exe build active file"
打上断点,按下F5
即可开始多文件调试…
5.使用CMake实现多文件编译和调试
5.1 新建CMakeLists.txt
文件
cmake_minimum_required(VERSION 3.0) # 最低版本要求设置为3.0
project(main) # 工程名称
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -o2 -Wall") # 设置g++编译参数 -g生成带调试信息的可执行文件,-o2优化源代码,-Wall 打印警告信息
include_directories(include) # 向工程添加多个特定的头文件搜索路径 --->相当于指定g++编译器的-I参数
add_executable(main main.cpp src//test.cpp) # 生成可执行文件 编译main.cpp生成可执行文件main
由于CMakeLists中设置了头文件搜索路径,所以代码test.cpp
、main.cpp
中的头文件可以去掉文件夹名include/
即
#include"test.h"
5.2 配置工具包:
点击下图所示
选择你安装的编译器版本,这里我选择了最新的10.2.0
5.3 多文件编译
新建文件夹build
存放编译过程中生成的冗余文件:
生成 Makefile:
cmake .. -G "Unix Makefiles"
(第一次运行cmake时)
后面就直接cmake ..
在这我遇到过一个问题(windows下cmake … 没有makefile的问题)
编译指令:make
低版本的可能是 mingw32-make.exe
PS C:\Users\Administrator\Desktop\Cplus\test\build> cmake .. -G "Unix Makefiles"
-- The C compiler identification is unknown
-- The CXX compiler identification is GNU 10.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/cygwin64/bin/cc - skipped
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/cygwin64/bin/c++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/Administrator/Desktop/Cplus/test/build
PS C:\Users\Administrator\Desktop\Cplus\test\build> make
Scanning dependencies of target main
[ 33%] Building CXX object CMakeFiles/main.dir/main.cpp.o
[ 66%] Building CXX object CMakeFiles/main.dir/src/test.cpp.o
[100%] Linking CXX executable main.exe
[100%] Built target main
PS C:\Users\Administrator\Desktop\Cplus\test\build> .\main.exe
This is a test file!
This is show function!
5.4 一键调试
修改launch.json
文件中的路径为main.exe
的路径,按下F5
即可调试,前提是main.exe
已经生成。
使用cmake实现一键调试:
替换task.json
文件:
{
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build" //等价 cd ./build
},
"tasks": [
{//等价 cmake ..
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
"..",
]
},
{//等价 make
"label": "make",
"group": {
"kind": "build",
"isDefault": true
},
"command": "make",
"args": [
]
},
{//将上面两个指令按照顺序执行
"label": "Build",
"dependsOn":[
"cmake",
"make"
]
}
]
}
修改launch.json
文件:
其中,修改 "preLaunchTask": "Build"
,与task.json
关联
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/main.exe",//代表main.exe
"args": [],
"stopAtEntry": false,
// "cwd": "C:\\cygwin64\\bin",
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\cygwin64\\bin\\gdb.exe", //调试器路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "Build"//调试之前做的事情。这里是生成main.exe文件
}
]
}
不同的gcc安装路径,还应修改调试器路径"miDebuggerPath"
5.5. 总结一下
- 复制CMakeLists.txt文件
- 修改CMakeLists.txt文件内容,包括:
根据你自己的工程目录情况修改,若输出文件名不是main.exe,则下面launch.json
和task.json
也要接着改了 - 复制以上
launch.json
和task.json
- 修改
launch.json
中调试器路径为你的电脑调试器路径 - 在目录中新建文件夹并命名为
build
- 先在终端执行一次
cmake .. -G "Unix Makefiles"
- 设置断点,按下
F5
即可一键重新生成可执行文件,并调试