Vscode搭建C语言多文件开发环境

一、文章内容简介

本文介绍了 "Vscode搭建C语言多文件开发环境"需要用到的软件,以及vscode必备插件,最后多文件编译时tasks.json文件和launch.json文件的配置。即目录顺序。由于内容较多,建议大家在阅读时使用电脑阅读,按照目录来看。

二、前提需要安装软件

①vscode,安装简单,百度一下

②Mingw64,这是windows下的gcc编译和调试工具,免安装,下载解压即可。资源如下博主有:

MinGW-w64 10.0.0 + GCC 12百度云盘下载_mingw-w64 gcc百度云盘-CSDN博客

三、vscode插件配置

安装好vscode之后,必须安装C/C++插件,才能识别.c文件,安装Chinese (Simplified)汉化。

四、tasks.json文件和launch.json文件配置

这两个文件的作用,在此处提前介绍,在五、举例测试中会用到,在此处看明白了文件作用,便于在五中用到时,直接使用。

1.tasks.json文件配置

tasks.json是指定编译器gcc路径,需要编译的.c文件,以及编译后生成的可执行exe文件

Vscode默认配置如下:编译一个.c文件时,不需要修改,如果需要编译多个文件,就需要修改。

单一文件编译,即vscode默认,配置如下:

cpp 复制代码
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "C:\\mingw64\\bin\\gcc.exe",//gcc编译器路径
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",//需要编译的文件,${file}指当前.c文件,多文件时此处需要修改
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",//编译后生成的可执行文件,此处是和当前.c文件同名的.exe文件。
                ""
            ],
            "options": {
                "cwd": "C://mingw64//bin/"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

多文件编译,修改后配置如下: 配置成编译当前文件夹下所有.c文件,并生成a.exe可执行文件。

cpp 复制代码
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "C:\\mingw64\\bin\\gcc.exe",//安装的gcc路径,我的解压后是放在c盘根目录下
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                // "${file}",
                "${fileDirname}\\*.c",//编译当前目录下,所有的.c文件
                // "${fileDirname}\\test.c",//编译当前目录下test.c文件,这种是指定编译哪一个,为了方便,直接编译所有,选上面一种
                "-o",
                // "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "${fileDirname}\\a.exe",//由于是多文件,编译后生成的可执行文件名为a.exe,这个名字再launch.json中要用
                ""
            ],
            "options": {
                "cwd": "C://mingw64//bin/"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

2.launch.json文件配置

launch.json是调试配置文件,需要指定要调试的exe文件,指定调试器gdb的路径。

单一文件 ,vscode默认配置如下:

cpp 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C/C++ Runner: Debug Session",
      "type": "cppdbg",
      "request": "launch",
      "args": [],
      "stopAtEntry": false,
      "externalConsole": false,
      "cwd": "c:/Users/Xiasir/Desktop/error",
      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",//tasks.json生成的单一文件的可执行文件
      "MIMode": "gdb",
      "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",//gdb执行路径
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

多文件调试,配置如下:

cpp 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C/C++ Runner: Debug Session",
      "type": "cppdbg",
      "request": "launch",
      "args": [],
      "stopAtEntry": false,
      "externalConsole": true,//使用内部控制台
      "cwd": "c:/Users/Xiasir/Desktop/error",
      // "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
      "program": "${fileDirname}\\a.exe",//在tasks.json中生成的可执行文件a.exe,a是可执行文件名,由我们自己定义
      "MIMode": "gdb",
      "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",//调试器gdb的执行路径,我的mingw64安装在C盘,根据你自己的确定
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

五、举例测试

1.建立文件夹 和 多个.c文件

在桌面新建文件夹,命名为test_vscode,并建立main.c和test.c和test.h两个文件。如下图所示:

2.使用vscode打开文件夹

点击test_vscode文件夹,右键,使用vscode打开

3.编辑代码

①main.c代码如下:

cpp 复制代码
#include <stdio.h>
#include "test1.h"

int main(void)
{

    printf("hello world\r\n");
    test();//此函数在test1.c中实现,在test1.h中声明
    return 0;
}

②test1.c代码如下:

cpp 复制代码
#include "test1.h"
#include <stdio.h>

void test(void)
{
    printf("this is test\r\n");

}

③test1.h代码如下:

cpp 复制代码
void test(void);

④配置标题四的的task.json文化和launc.json文件

此时大家按下F5或者Ctrl+F5会发现,会报错,程序不会被执行

点击打开launch.json文件,此时界面如下:

会发现,在图上左边.json文件下没有tasks.json文件,在launch.json中也没有gdb执行路径和可执行文件路径。此时我们需要生成tasks.json文件并修改 ,然后修改launch.json文件

1.生成task.json文件

点击终端--->配置--->使用模板创建tasks.json文件-->others

此时左边.json文件夹下有了tasks.json文件,以及tasks.json中如下。默认的比较简单,也和第四步有点不一样,我们直接复制第四步的tasks.json多文件下的配置。

即:tasks.json改为如下配置:

cpp 复制代码
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "C:\\mingw64\\bin\\gcc.exe",//安装的gcc路径,我的解压后是放在c盘根目录下
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                // "${file}",
                "${fileDirname}\\*.c",//编译当前目录下,所有的.c文件
                // "${fileDirname}\\test.c",//编译当前目录下test.c文件,这种是指定编译哪一个,为了方便,直接编译所有,选上面一种
                "-o",
                // "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "${fileDirname}\\a.exe",//由于是多文件,编译后生成的可执行文件名为a.exe,这个名字再launch.json中要用
                ""
            ],
            "options": {
                "cwd": "C://mingw64//bin/"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}
2.修改launch.json:

复制第四步的launch.json多文件下:

cpp 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C/C++ Runner: Debug Session",
      "type": "cppdbg",
      "request": "launch",
      "args": [],
      "stopAtEntry": false,
      "externalConsole": false,//如果想使用外部控制台,改为true即可
      "cwd": "c:/Users/Xiasir/Desktop/error",
      // "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
      "program": "${fileDirname}\\a.exe",//在tasks.json中生成的可执行文件a.exe,a是可执行文件名,由我们自己定义
      "MIMode": "gdb",
      "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",//调试器gdb的执行路径,我的mingw64安装在C盘,根据你自己的确定
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

⑤编译代码

配置完tasks.json和launch.json文件后,此时按下F5,仍然没法调试,会报错如下:

报错找不到launch.json文件中的可执行文件a.exe。

因为编译器此时并没有进行编译,F5是调试,此时并没有编译。所以得先编译一次,生成可执行文件a.exe。

1.生成可执行文件a.exe

此时点击终端->运行生成任务,也可按快捷键ctrl+shift+b生成可执行文件a.exe

2.运行可执行文件a.exe

**执行方式一:**此时再按下F5,就会顺利执行a.exe文件,执行结果如下:

**执行方式二:**在vscode内置终端下,输入命令.\a.exe也可执行。

六、总结

通过这一篇文章看下来,会觉得vscdoe配置起来非常的麻烦,确实不如集成开发环境好用,但是vscode这主题很舒服,看着方便。折腾下来,发现配置也是按照代码编译原理的逻辑来配置的。

首先是程序员编写代码,然后调用编译器gcc编译成可执行文件,最后调试时调用gdb进行调试。

1.因此在编译时需要指定:需要编译的源文件,gcc的位置,编译后生成的可执行文件名,tasks.json中完成。

2.在调试时需要指定:可执行文件名,调试器gdb的路径。在launch.json中完成。

相关推荐
秋天下着雨3 小时前
idea中打补丁包
java·ide·intellij-idea
千百元6 小时前
windows自带16进制转10进制
编辑器
evan_gyy6 小时前
【VSCode】解决:提取扩展失败,XHR Failed
vscode·代理·扩展
乐闻x6 小时前
VSCode 插件开发实战(一):快速入门插件开发
ide·vscode·编辑器
scoone6 小时前
VSCode 中 Git 功能比较:内置 Git、GitLens 与 Git History 插件
ide·git·vscode
这个男人是小帅6 小时前
【AutoDL】通过【SSH远程连接】【vscode】
运维·人工智能·pytorch·vscode·深度学习·ssh
sleepybear11138 小时前
JetBrains IDEA 2024 在使用 lombok 后构建失败/编译失败解决方案
java·ide·intellij-idea·软件构建
mango大侠10 小时前
Ubuntu24.04 安装 visual studio code
ide·vscode·编辑器·visual studio code
lansye10 小时前
VSCode 启用免费 Copilot
ide·vscode·copilot