本文将介绍在Windows上搭建基于Visual Studio Code、Mingw-w64的C和C++的开发环境。

在Windows平台上,鲜有IDE能和Visual Studio竞争(毕竟VS号称宇宙第一IDE)。但是,Visual Studio的体量极大,2019版本光安装C++开发环境就需要10G左右的空间,对电脑性能要求颇高。杀鸡焉用牛刀的,对于小型的代码,Visual Studio Code(以下简称VS Code)是极佳的解决方案。VS Code性能优秀、图形界面好看(划重点),因此,在这篇文章中我选择VS Code和GCC在Windows的移植版Mingw-w64作为编辑器和编译器,搭建开发环境。

一、软件下载

首先,你需要下载三个软件。它们是:

  1. 7-zip
    一个优秀的开源压缩软件,用于解压Mingw-w64的程序离线安装包。如果你电脑上已经有了其它压缩软件,可以先不下载7-zip。

  2. Mingw-w64
    GCC在Windows下的移植版。

  3. VS Code
    我们的代码编辑器。

下载地址:

  1. 7-zip

  2. Mingw-w64
    注意选择离线安装包下载。我选择的是最新版本的x86_64-posix-seh版本。

  3. VS Code

二、安装

1. 7-zip
下载好安装包后,双击根据提示安装即可。

2.Mingw-w64

您将离线包下载完成后,即可使用刚才安装的7-zip进行解压。将解压出来的mingw64文件夹放到您想要防止的位置,例如C:\Program Files\mingw64

解压完之后,进入mingw64的bin目录,将文件资源管理器上bin目录的路径拷贝到剪切板中。

Mingw的安装路径

打开文件资源管理器,在此电脑处点击鼠标右键,进入属性->高级系统设置->高级->环境变量。

环境变量入口

在“系统变量”中,找到Path变量,选中,单击下方的“编辑”。

找到Path

单击右侧“新建”,将刚才的复制的bin目录的路径追加进去。

配置Path

单击确定->确定->应用->确定,保存刚才配置好的环境变量并退出。

使用Win + R快捷键打开运行窗口,输入cmd,确定。在弹出的命令行窗口中,输入gcc -vg++ -v,如能看到类似下图的输出,证明配置成功。

验证成功

至此,Mingw-w64安装完成。

3. VS Code

首先,您需要下载安装包,安装。

安装VS Code

安装好后,运行Visual Studio Code按Ctrl + Shift + X打开插件市场,安装插件:

  1. C/C++【必须】

  2. Chinese (Simplified) Language Pack for Visual Studio Code【可选】

  3. Include Autocomplete【可选】

插件

全英文的路径中创建一个文件夹作为工作区,例如E:\Solutions\C。然后使用VS Code打开这个文件夹。注意,这个工作区路径及里面的文件和文件夹一定要使用全英文命名,否则可能无法调试。

三、配置编译选项

新建文件,命名为heloworld.c(helloworld.cpp)
新建文件
在文件中敲入如下内容:

#include <stdio.h>

int main(void)
{
    printf("Hello World!\n");
    return 0;
}

小技巧:在代码编辑区按Alt + Shift + F可以将代码格式化。

从主菜单中,选择Terminal -> Configure Default Build Task。

配置编译选项

在下拉列表中,将显示任务下拉列表,其中列出了C(C++)编译器的各种预定义构建任务。单击gcc.exe build active file(C++可选g++.exe build active file)。

选择默认选项

然后,VS Code将会自动为您在当前目录的.vscode目录下,创建task.json文件来告诉VS Code如何构建(编译)程序,内容类似于:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "gcc.exe build active file",
            "command": "D:\\mingw64\\bin\\gcc.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "D:\\mingw64\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }
    ]
}

其中,args后面的内容为传给编译器的参数;${…}表示VS Code的环境变量
配置task.json在args中,我建议初学者加上”-Wall”参数获得更多的警告,提高代码的规范性,避免一些傻瓜错误。

关闭task.json后,在helloworld.c(helloworld.cpp)文件中,我们按Ctrl + Shift + B快捷键就可以编译,但不运行我们的代码啦。如果您需要运行代码,可以考虑使用命令行,或者使用第五部分调试的方法。
命令行运行程序

四、配置调试选项

接下来,我们将创建一个launch.json文件来配置VS Code。按F5,选择环境为C++ (GDB/LLDB):

选择调试器

选择构建任务。这里选择刚才创建的gcc.exe build active file(g++.exe build active file):

选择构建任务

稍等一会,然后,VS Code会在.vscode文件夹中创建launch.json文件,内容类似于:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gcc.exe build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\mingw64\bin\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "gcc.exe build active file"
        }
    ]
}

这个就是调试器的配置文件,注意preLaunchTask的值一定要与task.json中的label的值一致。

task.json

关闭task.json,回到helloworld.c,单击行号右侧可以打断点(右键设置条件断点或命中次数断点),按F5开启调试,黄色高亮的部分就是当前即将执行的语句,左侧的varible窗口可以查看局部变量,watch窗口可以添加查看,Call Stack窗口可以查看堆栈调用,输入和输出在下方的终端完成。

开始调试

至此,开发环境配置完成。

五、拓展

  1. 多文件编译
    这样创建的VS Code调试,无法编译多文件程序,需要修改task.json中的arg选项,且不具备复用性。
    因此,我建议大型的、长期的开发工程使用Makefile或者CMake。例如将项目的编译信息写在Makefile中,在task.json中调用mingw32-make(mingw-w64自带的make工具)来调用编译脚本进行编译。

  2. 多编译选项
    这么创建的编译选项默认添加了-g编译参数,且不带任何优化。如果需要发布Release程序,需要手动编译或调整task.json文件,非常麻烦。
    task.json文件支持添加多个构建选项,例如我们可以分别为C++的Debug和Release构建编译选项(C语言把g++换成gcc即可):

{
    "tasks": [
        {

            "type": "process",
            "label": "G++ DBG",
            "group": {
                "kind": "test",
                "isDefault": true,
            },
            "command": "D:\\mingw64\\bin\\g++.exe",
            "args": [
                "-Wall",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "D:\\mingw64\\bin"
            },
            "problemMatcher": "$gcc",
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            }
        },
        {
            "type": "process",
            "label": "G++ Build",
            "group": {
                "kind": "build",
                "isDefault": true,
            },
            "command": "D:\\mingw64\\bin\\g++.exe",
            "args": [
                "-O3",
                "-Wall",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
            ],
            "options": {
                "cwd": "D:\\mingw64\\bin"
            },
            "problemMatcher": "$gcc",
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            }
        }
    ],
    "version": "2.0.0"
}

这样,F5可以开启默认的调试,Ctrl + Shift + Build可以选择带优化的编译选项。注意,launch.json文件中的preLaunchTask也应对应的调整。

六、参考资料

  1. 微软官方文档
最后修改日期: 2020年2月1日

作者

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论