VSCode配置C/C++(单文件+项目)自救指南

前言

VSCode是一款轻量级的代码编辑软件,拥有良好的代码编辑界面和许多好用的插件拓展,但它不是一款IDE(集成开发环境),因此不能直接编译运行C/C++文件,所以我们需要学会如何配置编译运行环境。

笔者之前用的IDE是Visual Studio 2019,但存在打开速度慢的缺点,以至于有人吐槽说“等你打开好vs我代码都写完了”;而且当你要写一小段cpp代码来验证某个知识点的时候也需要新创建一个项目,这就显得十分麻烦;再者,笔者发现VS的项目还特别占用空间,一个课程下来所有代码占用的空间竟达到3G之多,而且一个文件夹明明显示大小只有不到20M,实际上却占用了400多M的空间,这让笔者感到很疑惑。后来笔者了解到,占用内存的幕后主使是VS自身产生的缓存,而且它们还是以隐藏文件的形式潜藏在文件夹内,无形中占用掉大量的磁盘空间。

   

 隐藏起来的缓存文件

 因此,笔者决定学习如何在VSCode上配置C环境。在这个过程中笔者查阅了很多互联网上的教程,也遇到了很多意想不到的错误,尤其是笔者尝试多文件编译的时候。故笔者在此给出我自己的一套配置方法,算是对各种教程的一个小总结。在此要感谢那些细心的、无私的提供教程的人!

安装VSCode和MinGW-w64编译器

MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。简言之,MinGW 就是 GCC 的 Windows 版本 。

VSCode的安装在网上已经有很丰富的教程,而且不是配置的重点,故略去,MinGW的安装可以直接搜索或到如下网址下载:

MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net

 下载图中版本即可。

添加环境变量以及在VSCode上安装C/C++插件

将下载好后的MinGW文件夹解压到任意一个目录下,点开文件夹里面的bin文件夹,然后复制它的相对路径:

之后 此电脑-右键-属性 在右边找到“高级系统设置”,点击进入后点击“环境变量”,在下方的“系统变量”中找到Path变量,点击“编辑”:

然后点击“新建”,把刚刚的bin目录粘贴进去,之后点击确定,如图所示,之后一路点击确定退出。这时我们打开cmd,键入gcc并按回车或者键入g++并按回车,出现如下图所示的结果表明已经配置好了MinGW:

 

 OK,这时我们可以打开VSCode,找到左边栏的“拓展选项”,搜索C/C++然后安装插件即可(第一次打开VSCode界面显示的是英文,我们可以搜索“Chinese”安装简体中文插件即可):

 

 现在,你可以尽情地在VSCode中敲代码了!笔者建议创建一个特定的文件夹,然后用VSCode的“打开文件夹”打开,然后就可以在左侧的“资源管理器”中新建代码文件了,记得写正确拓展名哦!之后编写的C/C++代码都存放在这个文件夹中,至于为什么要这么做,笔者会在下面提到。

 编译/调试单个c/cpp文件

在VSCode中写完了代码之后,我们就要编译运行了。首先点击左侧的“小虫子”,看到“运行和调试后”点击“创建launch.json文件”,在正上方的弹框中选择第一个,继续选择第一个(g++),之后就会自动创建出一个json文件了。我们需要配置的就是launch.jsontasks.json两个文件。

 

 之后回到cpp文件中,点击F5(Fn+F5)就可以编译运行了,输出会在下方的“终端区”显示,如果想要弹出一个“黑框框”的话,就需要回到launch.json文件中,找到"externalConsole"(外部控制台),把后面的参数改成“true”即可。很神奇的是,不加限制的话VSCode的“黑框框”总是会一闪而过,因此一般会在代码最后加上一句“system("pause")”来让它保留在屏幕上。

 我们可以发现此时文件夹下自动多出了一个“.vscode”文件夹,在那里可以看到两个json文件。在此可以回答为什么上面提到要把代码都放在同一个文件夹下了:VSCode只是一款编辑器,并不具备调试功能,两个json文件的作用就是告诉VSCode应该如何编译我们的代码以及去哪里找到相应的头文件等。没有了“.vscode”文件夹,VSCode就不可以完成编译文件的操作了。在同一个文件夹下的全部代码都可以共用同一个“.vscode”文件夹,就会方便许多。

 到目前为止,VSCode已经可以为你编译单个的c/cpp文件了!

你可以在VSCode界面下键入Ctrl+Shift+p,在弹出的输入栏内输入C/C++,找到编辑配置,打开:

 之后可以看到“.vscode”文件夹下多出了一个json文件,它的作用主要是配置inlcude的目录,当你只用到系统自带的标准库时,可以无需理会这个文件,但当你需要自己创建.h头文件和include他人的头文件时,就需要进行配置(右边的“包含路径”,笔者忘记是什么时候要用到了,反正等报错了再算吧,暂时不管也行):

创建项目并调试

在编程的路上,我们肯定不会止步于单个文件的编写,很多时候我们需要创建一个项目啦,include很多的头文件啦,这时候你会发现VSCode会给你的c/cpp文件报错了,无法正常编译:

"No such file or directory"???明明代码都没有错呀,怎么点一百次调试还是错呢?不用再抓头了,这是因为VSCode不知道上哪去找你的头文件。

我们打开c_cpp_properties.json,找到"includePath"这个变量,可以看到它的参数只有"${workspaceFolder}/**",它的意思是当前的文件夹,在上图中我们的头文件是放在了head子文件夹下的,难怪编译器找不到它啦!

 笔者推荐一种项目管理方式,就是在项目文件夹下创建子文件夹并命名为"include",用于存放头文件;创建子文件夹并命名为"lib",用来存放实现头文件中的函数的cpp文件;创建子文件夹并命名为"src",用于存放源文件,之后配置c_cpp_properties.json,在"includePath"中添加(注意多个值的时候最后一个值前要加逗号哦):

"${workspaceFolder}/include"

 

 接下来打开tasks.json文件,在"args"变量中添加:

"-I","${workspaceFolder}/include", //"-I"指定链接库

"${workspaceFolder}/lib/xxx.cpp", //有一个cpp文件就加上一个cpp文件,下图添加了四个

在编译之前,要确保launch.json中的"program"参数后面的值就是你要编译的那个cpp文件哦!比如说我的demo.cpp文件放在了src文件夹中,那么我就要把原始的值改为图中所示:

完成这些配置后,如无意外就可以编译自带头文件的代码啦!(示例如图)

学会用CMake

上述方法存在一个麻烦的地方,就是总要手动添加很多东西,笔者看到很多人都在极力推荐用CMake管理项目,通过CMakeList来一键配置,似乎很方便,于是笔者又去了解了一番,并找到了一个介绍得很详细的视频,故在此不作详细介绍:

手把手教会VSCode的C++环境搭建,多文件编译,Cmake,json调试配置( Windows篇)_哔哩哔哩_bilibili

 个人总结就是:

1.安装好CMake,添加环境变量

2.在目标文件夹下可以把所有头文件和cpp文件都放在一起,之后创建CMakeLists.txt,通过project()和add_executable()命令配置好

3.按下Ctri+Shift+p输入CMake找到Cmake配置,配置好后会自动生成一个build文件夹

 4.之后修改launch.json和tasks.json

launch.json如下:

{

    // 使用 IntelliSense 了解相关属性。

    // 悬停以查看现有属性的描述。

    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",

    "configurations": [

        {

            "name": "C/C++: g++.exe Build and debug active file",

            "type": "cppdbg",

            "request": "launch",

            "program": "${workspaceFolder}/build/hello.exe", //要和你生成的那个可执行文件匹配

            "args": [],

            "stopAtEntry": false,

            "cwd": "${fileDirname}",

            "environment": [],

            "externalConsole": true,

            "MIMode": "gdb",

            "miDebuggerPath": "D:\\MinGW\\mingw64\\bin\\gdb.exe",

            "setupCommands": [

                {

                    "description": "为 gdb 启用整齐打印",

                    "text": "-enable-pretty-printing",

                    "ignoreFailures": true

                },

                {

                    "description": "将反汇编风格设置为 Intel",

                    "text": "-gdb-set disassembly-flavor intel",

                    "ignoreFailures": true

                }

            ],

            "preLaunchTask": "Build" //记得改成这样

        }

    ]

}

 tasks.json如下:

{   
    "version": "2.0.0",
    "options": {
        "cwd": "${workspaceFolder}/build" //cd到build文件夹下
    },
    "tasks": [
        {
            "type": "shell",
            "label": "cmake",
            "command": "cmake",
            "args": [
                ".."
            ]
        },
        {
            "label": "make",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "command": "mingw32-make.exe",
            "args": [
            ]
        },
        {
            "label": "Build", //总的要执行的label,包含以上两个label
            "dependsOn":[
                "cmake",
                "make"
            ]
        }
    ],
}

 好的,之后编译运行即可,芜湖起飞!

写在最后

配置C/C++环境的整个过程是很麻烦的,对于像我这样的小白来说更是困难重重,那为什么不直接用那些简便的IDE呢?我认为在这个过程中可以体会到那些IDE工作的过程,对C/C++文件的编译有更深刻的了解,可以为将来在Linux系统中配置环境打下基础。同时,在学习的过程中我们遇到了各种各样的json文件,它的语法非常有趣,像是一个个的键值对,那么json是什么?里面每一条代码的作用是什么?这些问题都勾起我的好奇心,想要一探究竟。在网上有很多人已经给出详细的注释,在此笔者不敢班门弄斧,故留给各位读者尽情探索。

什么?还是报错?我的评价是:重启VSCode!

  • 11
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值