【VS Code】Windows10下VS Code配置C/C++语言环境

这篇文章属于本人参考诸多博客、教程、文档等资料,所撰写的「Windows10上配置VS Code」系列文章之一,内容随时可能发生更新变动,欢迎关注和收藏VS Code系列配置总目录一文以作备忘。

由于DevC++太过落后和老旧,而C/C++是本人最经常使用的语言,于是下定决心转向VS Code。现在有了VS Code编辑器,为了完成相关语言环境的配置,我们需要做只有下载编译套装、安装支持插件和书写配置文件三件事……听起来好多啊。


1. 下载安装MinGW-w64

共通的第一步已经完成,即获取编辑器。接下来要做的就是获取C/C++编译套装。常见的C/C++编译工具有GCC(GNU Compiler Collection ,即GNU编译器套件,GCC过去代表GNU C编译器,但是由于编译器支持除C之外的其他几种语言,它现在代表GNU编译器套件集合,GCC官网在此处)、Clang(C language family frontend for LLVM ,提供兼容GCC的编译器驱动程序 clang.exe 和兼容MSVC的编译器驱动程序 clang-cl.exeClang官网在此)、MSVC(Microsoft C++ 编译器工具集)三巨头,个人觉得Clang的架构更优雅、优化更惊艳,然而姜还是老的辣……在对C++ 20的语核支持“比赛”中,GCC首先接近了终点——虽然MSVC一个月前宣布自己冲过了终点。

MSVC compiler toolset is now C++20 feature-complete
– C++20 immediate functions & constinit support added in 16.10

此处要使用的GCC是MinGWMinimalist GNU for Windows),MinGW是一个Windows特定头文件和GNU工具集的集合,是为了那些不喜欢工作在Linux而留在Windows的人提供的一套符合标准的GNU工作环境。MinGW实际上就是将GCC移植到了Windows平台上,并且包含了WIN32 API,可以将源代码编译为能在Windows中运行的可执行程序,还可以使用一些Linux下的开发工具。

MinGW目前可以分为MinGW和MinGW-w64,前者只能够编译32位可执行程序,已经停止更新,后者可以编译32位或64位可执行程序,是MinGW的标准版本。最终要下载的是MinGW-w64下载地址点此处。找到下面这个并下载:

下载可能比较慢,耐心等待中……下载完成后还需要解压得到mingw64文件夹,将该文件夹拖到一个合适的、不包含中文地址的位置,如 C:\Program Files 。打开 C:\Program Files\mingw64\bin ,里面有许多可执行程序,gcc.exe 是C程序的编译器,g++.exe 是C++的编译器,gdb.exe 是调试程序的Debug工具:

为了让程序能够访问这些可执行程序,需要将目录 C:\Program Files\mingw64\bin 添加到环境变量中。这里可以看到,本人已经将这一目录添加到系统变量的Path中(用户变量只对当前用户有效,系统变量对所有用户有效):

现在进行验证,在CMD中输入 gcc --version ,可以看到如下版本信息,说明GCC已经安装成功:

现在电脑里面有了编辑器VS Code和编译套装GCC,它们下载自不同的网站,安装在不同的位置,彼此之间没有任何联系。而下面,我们将建立这一条道路,将两者关联起来。


2. 语言环境的文件结构

不过在此之前,一个题外但又很重要的事情是,我们需要辨析语言学习环境和实际项目开发环境这两者之间的区别。一个关键性的不同是二者的文件结构——或者说,组织和决定文件夹与文件之间的嵌套从属关系的方法。

在学习一门语言时,无论是C/C++/Haskell/Java/Python/Racket/Rust/Scala,我们多数情况下有的都是单个文件,了不起会有一些简单的小项目,涉及到几个简单头文件和源文件的组合。实际的项目开发就复杂多了,可能会有 build, lib, makefile, CMakeLists 等文件/文件夹,以及一系列的音频、视频和图片资源文件。由于此处介绍的是语言学习环境,我们的文件结构必须方便新建单个语言文件、编译调试、管理查看等,而不是学一点什么知识就要新建一个项目。

因为本人打算用VS Code统一组织和管理各个语言学习环境,所以新建了一个名为 C:\CodeWorld 的文件夹,将所有语言学习代码放在这里面。接着在里面新建了 Code_C, Code_Cpp, Code_Haskell, Code_Java, Code_Python, Code_Rust 等文件夹,在 Code_Cpp 中新建了 Cpp_Single, Cpp_Multiple 两个文件夹作为工作区文件夹。

其后开发实际项目时,也可以同样在 CodeWorld 文件夹下进行组织,比如从Github克隆项目时,建立一个 Github 文件夹;自己做项目时,建立一个 Projects 文件夹……

下面看一下语言学习环境下的工作区文件夹,以 C_Single 为例组织文件结构。首先要有一个 .vscode 文件夹,存储相应的配置文件。然后要有源文件,这些源文件可以分类进不同的文件夹,比如按照章节分或者按照类型分。我个人的分类比较细致,包括不同OJ的文件夹、不同技术书的文件夹等等,这里不一一列出。这些分类文件夹中都会有一系列的单个源文件,分别编译出的 .exe 文件一多,就容易杂乱,因此我们统一将这些可执行文件放到每个分类文件夹下的 bin 文件夹。一个示例如下:

C_Multiple 类似于此,也有 .vscode 文件夹,有分类文件夹,但是每个分类文件夹中都是一系列的小项目文件夹,小项目文件夹中包含一组源文件和编译出的 .exe 文件,不需要单独的 bin 文件夹。一个示例如下:

这就是一个合格的语言学习环境需要的文件结构,下面可以开始安装对应插件、书写相关配置文件。


3. 安装C/C++支持插件、书写配置文件

为什么要安装插件、配置文件呢?我们都知道,通过命令行使用 gcc 命令,能够编译生成可执行文件,但是每次都用命令行就太麻烦了。VS Code通过安装的插件和 .vscode 文件夹下的JSON配置文件(JSON文件的写法是VS Code官方规定的,可以看相关文档),帮我们实现了这些功能——一个是 tasks.json 文件,编译和执行就是我们想要VS Code执行的任务,因此 tasks.json 中要写两个 taskBuild, Run构建 Build 任务包括预编译、编译 compile 、链接等过程。除了构建执行外,还需要进行调试 Debug ,这就需要通过另一个 launch.json 文件与调试插件来实现。注意,tasks.json 中的任务 Build 应在 launch.json 中的 Debug 之前执行。此外还有一个 c_cpp_properties.json 文件,用于实现某些关于C/C++语言特性的功能。

听上去很麻烦是吧?不过这还没到时候呢,本部分内容只是入门引导,用于C/C++语言学习。真要实打实开发C/C++项目,还需要先学GCC、Makefile、CMake,学习如何链接静态/动态库,如何引入头文件、解决文件冲突等等。这些知识又是进阶学习必不可少的,不会系统构建就等于C/C++停留在入门水平,只能做些玩具项目

然而一个很现实的问题是,关于C/C++构建系统的资料太少了,C/C++书籍大多也不讲这些生态;Visual Studio那一套系统构建还和Unix/Linux环境不兼容……种种原因导致新手入门十分困难。可以预见的是,这些内容都学完、这些坑都踩完还要很久,不过这个时候回头再去用IDE,就会有一种了然于心的透彻感。

3.1 安装C/C++支持插件

官网Debugger extensions 一栏中已经说明,VS Code有对 Node.js 运行时的内建支持,因此可以调试JavaScript、TypeScript和其他能够转写到JavaScript的编程语言。对于其他语言,就需要安装 Debugger extensions 了。首先下载C/C++的支持插件(一个技巧是:在扩展搜索栏中输入 @category:"programming languages" @sort:installs ,就会列出所有语言相关的扩展):

可以看到,这一插件支持的编译套件和平台包括 Windows+MSVC/GCC and Mingw-w64, Windows Subsystem for Linux(WSL)+GCC, Linux+GCC, macOS+Clang 几种,它的功能包括,可以仔细看一下这些链接:

然后是 Native Debug 插件,方便调试:

3.2 书写C/C++单文件下配置文件,尝试构建、运行与调试

安装后重启VS Code,在文件->打开文件夹下,打开 C_Single 文件夹,此时VS Code中打开的根目录即是 C_Single(如果不额外设置JSON配置文件中的 optionsC_Single 作为工作区根目录,也是已执行程序的当前工作目录),由于是新建的文件夹,里面没有文件:

方法有很多种,这里我们新建一个名为 t.c 的文件,输入如下代码:

#include <stdio.h>
int main() {
   
   
    printf("Hello VS Code!");
    return 0;
}

然后点击运行,弹出的界面如下:

点击启动调试

需要选择 C++ (GDB/LLDB)Native Debug 插件支持):

  • 如果选择了默认配置,会生成 .vscode 文件夹和其中的 launch.json 文件用于调试,JSON文件内容如下,还需要自行修改:
    {
         
         
        // 使用 IntelliSense 了解相关属性。 
        // 悬停以查看现有属性的描述。
        // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
         
         
                "name": "(gdb) 启动",
                "type": "cppdbg
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

memcpy0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值