文章目录
下载VScode
官方地址:https://code.visualstudio.com/
下载编译器
C/C++的mingw-w64编译器下载地址:
https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
- 后缀说明
- DWARF:一种带调试信息(DWARF- 2(DW2)EH)的包, 所以比一般的包尺寸大,仅支持32位系统
- SJLJ:跨平台,支持32,64位系统,缺点是:运行速度稍慢,GCC不支持
- SEH: 调用系统机制处理异常,支持32,64位系统,缺点是:Gcc不支持(即将支持)
- x86_64: 简称X64,64位操作系统
- i686: 32位操作系统 (i386的子集),差不多奔腾2(1997年5月)之后的CPU都是可以用的
- posix: 启用了C++ 11 多线程特性
- win32: 未启用 (从时间线上正在尝试也启用部分 Treading)
安装编译器
- 在合适的位置解压mingw-w64,如在C:/
- 把解压后的bin目录添加到环境变量中
- 添加到环境变量中
- 在cmd命令行执行 gcc -v 验证
VScode安装插件
- C/C++
- Code Runner
- Chinese
VScode设置
- scanf函数读取键盘数据
- 文件>首选项>设置>用户设置>扩展>Run Code Configuration
找到 Run In Terminal 打上勾 这样运行的程序就会运行在vscode的集成控制台上
- 运行和停止
调试C/C++
不支持中文路径
- 首先选中一个用于存放各种代码的文件夹作为根路径也就是工作区,因为调试只会对根路径下的文件生效
- 在vscode中打开这个文件夹(文件>打开文件夹>选中你的文件夹)
- 在这个文件夹中新建一个 .vscode 的文件夹,不要忘了开头的 “.” 号(如果已有则不必再额外新建)
- 在.vscode文件夹中新建两个配置文件 launch.json 和 tasks.json,这里需要修改一处:launch.json中 “miDebuggerPath” 选项需要设置为你的调试器(gdb.exe)所在位置 (电脑上MinGW-w64的安装位置)
- 把下面的两个段代码粘贴到对应的文件里
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,一般为${fileDirname}即代码所在目录
"environment": [],
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "C:/mingw64/bin/gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
},
]
}
tasks.json
{
"version": "2.0.0",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
- 打开在当前工作区子目录下的.c/cpp文件就可以添加断点进行调试
- 也可以让c/c++程序的调试在vscode的集成控制台上进行,不额外显示黑窗口,类似于code runner的界面效果,只需将launch.json中的 “externalConsole” 项由 true 改为 false
- 如果需要有额外的编译指令如-lwsock32,需要调试前在tasks.json的args处添加上对应的指令,或者用 // 注释掉launch.json中的 preLaunchTask:“g++”(启动调试前执行g++编译按tasks指令格式编译) ,然后自己在按ctrl + ~ 打开终端手动编译好后再执行调试
CMake与VScode
- 下载cmake:https://cmake.org/download/
- VScode配置
Ctrl+Shift+p:输入C/C++:Edit Configurations(UI)生成配置文件 c_cpp_properties.json
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "D:\\mingw64\\bin\\g++.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64",
"configurationProvider": "vector-of-bool.cmake-tools"
}
],
"version": 4
}
Ctrl+Shift+p:输入Open launch.json生成配置文件launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:/MinGw/mingw64/bin/gdb.exe",
"preLaunchTask": "g++",
// "preLaunchTask": "compile", // task.json 中的 label
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
Ctrl+Shift+p:输入Tasks: Configure task生成配置文件 tasks.json,告诉VS Code如何构建(编译)程序。该任务将调用g ++编译器以基于源代码创建可执行文件
{
"version": "2.0.0",
"command": "g++",
"args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
Ctrl+Shift+p:打开配置文件 settings.json 添加
{
"C_Cpp.updateChannel": "Insiders",
"cmake.configureOnOpen": true,
"explorer.confirmDelete": false,
"cmake.cmakePath": "D:\\CMake\\bin\\cmake.exe",
}
cmake测试
- 创建一个工作区文件夹,如clang-work
- 在该文件夹下写一个简单的main.c程序作为测试程序,和创建一个CMakeLists.txt文件
- (可选)cmd执行命令cmake -G “MinGW Makefiles” 生成makefile文件
- 生成一个build目录
- make一下
- 生成目标文件
自动生成launch.json和tasks.json方法
-
使用Native Debug插件
-
使用C/C++ Compile Run插件
launch.json和tasks.json预定义变量
- ${workspaceFolder} - 当前工作目录(根目录)
- ${workspaceFolderBasename} - 当前文件的父目录
- ${file} - 当前打开的文件名(完整路径)
- ${relativeFile} - 当前根目录到当前打开文件的相对路径(包括文件名)
- ${relativeFileDirname} - 当前根目录到当前打开文件的相对路径(不包括文件名)
- ${fileBasename} - 当前打开的文件名(包括扩展名)
- ${fileBasenameNoExtension} - 当前打开的文件名(不包括扩展名)
- ${fileDirname} - 当前打开文件的目录
- ${fileExtname} - 当前打开文件的扩展名
- ${cwd} - 启动时task工作的目录
- ${lineNumber} - 当前激活文件所选行
- ${selectedText} - 当前激活文件中所选择的文本
- ${execPath} - vscode执行文件所在的目录
- ${defaultBuildTask} - 默认编译任务(build task)的名字