VScode 配置C、C++编译环境的一点经验

关于 VScode 配置C/C++编译环境的一点经验

插件方面只需要有一个 Code runner 就行了,不需要那个 C/C++ Compile Run 或者 C/C++ Runner

配置文件只需要顶层目录创建一个 .vscode文件,然后在此文件下创建 tasks.json 和 launch.json文件就行了

配置好之后按F5可进行调试

1. launch.json 文件

json 复制代码
{  
    "version": "0.2.0",  
    "configurations": [  
        {  
            "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg",       // 配置类型,这里只能为cppdbg
            "request": "launch",    // 请求配置类型,可以为launch(启动)或attach(附加) 
            "program": "${fileDirname}\\output\\${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径
            "args": [],             // 程序调试时传递给程序的命令行参数,一般设为空即可  
            "stopAtEntry": false,   // 设为true时程序将暂停在程序入口处,一般设置为false 
            "cwd": "${fileDirname}", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录
            "environment": [],  
            "externalConsole": false, // 调试时是否显示控制台窗口,一般设置为true显示控制台
            "MIMode": "gdb", 
            "miDebuggerPath": "G:\\software\\MinGW\\MinGW\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
            "preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc  
            "setupCommands": [  
                {   
		    "description": "Enable pretty-printing for gdb",  
                    "text": "-enable-pretty-printing",  
                    "ignoreFailures": true  
                }  
            ]  
        }  
    ]  
}

launch.json文件主要是配置调试CPP文件时需要的

主要注意以下几行的修改就行:

json 复制代码
// 将要进行调试的程序的路径
//(原来是workespaceFolder:定位到当前工作目录
// 现在改为fileDirname:定位到当前运行的文件所在目录)
// 这样做的好处就是可以控制输出文件都放到一个文件夹里
// 比如我的目录,可以分为 LeetCode 和 Test 目录里面的CPP文件输出的可执行文件都在自己的对应目录的output目录下不会掺杂在一起显得混乱
G:\VS_CODE\PROJECT
├───Test
│   ├───output
│ 	│	├───1.exe
│ 	│	└───2.exe
│ 	├───1.cpp
│ 	└───2.cpp
└───LeetCode
    ├───output
 	│	├───3.exe
 	│	└───4.exe
 	├───3.cpp
 	└───4.cpp
"program": "${fileDirname}\\output\\${fileBasenameNoExtension}.exe",
// 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录
"cwd": "${fileDirname}",
json 复制代码
// 设为true时程序将暂停在程序入口处,一般设置为false
"stopAtEntry": false, 

// miDebugger的路径,注意这里要与 MinGw 的路径对应(设置成自己安装的MinGW下bin目录的路径)
"miDebuggerPath": "G:\\software\\MinGW\\MinGW\\bin\\gdb.exe", 

// 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
//(这里和tasks.json文件的 "label": "g++" 相同就行,就是后半部分的引号 "g++" 那一块要相同)
 "preLaunchTask": "g++", 

效果如图:

2. tasks.json 文件

json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "g++",
            "command": "G:\\software\\MinGW\\MinGW\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
				"-std=c++11",
                "${file}",
                "-o",
                "${fileDirname}\\output\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "调试器生成的任务"
        }
    ]
}

tasks.json文件主要注意以下几行:

json 复制代码
//(这里和launch.json文件的 "preLaunchTask": "g++" 相同就行,就是后半部分的引号 "g++" 那一块要相同)
"label": "g++",

//command的路径注意这里要与 MinGw 的路径对应(设置成自己安装的MinGW下bin目录的路径)
"command": "G:\\software\\MinGW\\MinGW\\bin\\g++.exe",
json 复制代码
// 在里面添加 -std=c++11 可以支持C11,C17,C20同理
"args": [
	"-fdiagnostics-color=always",
    "-g",
	"-std=c++11",
    "${file}",
    "-o",
    // 这里的文件路径也要注意和 launch.json 里的
    // "program": "${fileDirname}\\output\\${fileBasenameNoExtension}.exe"相对应
    "${fileDirname}\\output\\${fileBasenameNoExtension}.exe"
],
"cwd": "${fileDirname}"
相关推荐
山登绝顶我为峰 3(^v^)329 分钟前
如何录制带备注的演示文稿(LaTex Beamer + Pympress)
c++·线性代数·算法·计算机·密码学·音视频·latex
十五年专注C++开发3 小时前
CMake基础:条件判断详解
c++·跨平台·cmake·自动化编译
森焱森4 小时前
水下航行器外形分类详解
c语言·单片机·算法·架构·无人机
QuantumStack5 小时前
【C++ 真题】P1104 生日
开发语言·c++·算法
hero_heart6 小时前
vscode中c_cpp_properities.cpp文件生成和作用
ide·vscode·编辑器
天若有情6736 小时前
01_软件卓越之道:功能性与需求满足
c++·软件工程·软件
whoarethenext6 小时前
使用 C++/OpenCV 和 MFCC 构建双重认证智能门禁系统
开发语言·c++·opencv·mfcc
Jay_5157 小时前
C++多态与虚函数详解:从入门到精通
开发语言·c++
xiaolang_8616_wjl8 小时前
c++文字游戏_闯关打怪
开发语言·数据结构·c++·算法·c++20
small_wh1te_coder8 小时前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c