在学校一直用 Dev-C++ 编写调试 C 语言程序,因为 Visual Studio Code 的配置搞不懂,放假在家闲着没事找了一些教程学习了一下下,现在我终于能较为完整的体验 VSCode 的撸代码快感了。这里记录一下配置过程,C/C++ 均可。

安装 C/C++ 插件

在 Visual Studio Code Extensive 搜索 C/C++ 插件后 install 安装。[ Marketplace Overview | Documentation ]

安装 C++ compiler or debugger

这里选用 Mingw-w64 ,因为容易装而且体积比 Build Tools for Visual Studio 稍微小点

  • 下载 mingw-w64-install.exe 放到安装路径下然后右键“以管理员身份运行”,按照提示安装 Mingw-w64。注意根据自己的机型配置选择安装向导界面中的选项。Sourceforge下载地址

    • Version 安装的 GCC 版本。
    • Architecture 机器操作系统架构。32 位选择 i686。64 位选择 x86_64。
    • Threads 操作系统接口协议。这个世界上只有两种操作系统,符合 posix 协议的,和 Windows(win32)。
    • Exceptions 异常处理模型。对于 64 位系统:seh 是新发明的,性能比较好,但不支持 32 位;而 sjlj 则是古老的,稳定性好,支持 32 位。对于 32 位系统:dwarf 的性能要优于 sjlj ,但不支持 64 位。

Mingw-w64 安装向导 Setting
Mingw-w64 安装向导 Setting

  • 前一种方法可能会因为网络问题出现“The file has been downloaded incorrectly” 报错,这里可以直接下载压缩包解压到安装路径下。sourceforge下载地址 注意选择对应文件名

添加系统环境变量

Windows 搜索“编辑系统环境变量”,打开“环境变量”,双击系统变量里的“PATH”,新添加一条 mingw64bin 文件夹路径的值,比如我的是 D:\mingw-w64\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\mingw64\bin 。记得点确定。保存后重新启动 VSCode 。

添加系统环境变量
添加系统环境变量

调试配置

在 VS Code 里打开一个项目文件夹,在 Terminal 终端输入下面命令检查是否安装成功并初始化。

> g++ --version
> gdb --version
> code .

运行完 code . 后会将当前文件夹作为你的“workspace”。现在在项目文件夹中添加文件 hello.c ,随便写点什么用作测试。Ctrl + S 保存文件。选择 Terminal > Configure Default Build Task 配置默认生成任务,选择“C/C++: g++.exe build active file”。

这时项目文件夹中会生成一个包含 task.json 文件的 .vscode 文件夹。打开 task.json 文件中有提示,根据 文档 可以对该文件进行高级设置。这里使用默认设置。

{
    // 有关 tasks.json 格式的文档,请参见
    // https://go.microsoft.com/fwlink/?LinkId=733558
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "gcc build .exe",
            "command": ["D:\\Script\\mingw64\\bin\\gcc.exe"],
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "D:\\Script\\mingw64\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

这时直接按 F5 调试会提示找不到程序,这时先运行生成任务,选择 Terminal > Tasks: Run Build Task 即可。这样会按照 task.json 文件生成一个文件名相同,后缀为 .exe 的可执行文件,即编译。

感觉我可能还有哪里没配置好,下次再说,先就酱了,能用就行。

配置 launch.json 文件,这里列出了两种调试模式,一种是直接运行已经存在的 .exe 文件,另一种是覆盖重新编译 .exe 文件并运行:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387

    // 注意 Build .exe file and run 的 preLaunchTask 和 task.json 中的编译任务 label 一致

    "version": "0.2.0",
    "configurations": [
        {
            "name": "Run .exe file",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true
        },
        {
            "name": "Build .exe file and run",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "preLaunchTask": "gcc build .exe"
        }
    ]
}

另外终端可能出现中文乱码的情况,在 settings.json 里添加一行自动判断编码有点效果,终端里的中文没有乱码,但是生成的 .exe 文件依然乱码。写代码的时候注意右下角编码应该就行了,问题不大。

{
    "explorer.confirmDelete": false,
    "files.autoGuessEncoding": true             // 添加这个
}

 


 

2020.4.2 看到了一篇写的很好的文章,请参考《Windows VS Code 配置 C/C++ 开发环境 - 森の色