在配置VSCode之前,我希望你看一下 下面的文章,去了解一下编译器、编辑器、集成开发环境、环境变量是什么。
编辑器、编译器、IDE、环境变量等 新手初识 - 恒星不见|夜中星陨如雨
1.下载MinGW64
如果你是从DevC++那篇文章(编辑器、编译器、IDE、环境变量等 新手初识 - 恒星不见|夜中星陨如雨)过来的。
理论上你可以直接使用DevC++软件自带的MinGW,但是DeVC++自带的MinGW的gcc版本较低,在后面的配置中,无法适应多源文件编译的新版gcc语法。
故推荐下载MinGW64,你可以去MInGW64官网去下载 (Downloads - MinGW-w64)。但是官网下载较慢,可以在 https://gitcode.com/open-source-toolkit/1f790/下载
这里给出百度网盘链接 百度网盘 请输入提取码
夸克网盘链接 https://pan.quark.cn/s/3493cad47a10
下载之后,对mingw-w64.zip解压。
如果不想自己修改配置文件,就通过百度网盘或夸克网盘下载,并和我一样放在E盘下,然后把E:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin添加到环境变量里,就可以直接用我的配置文件。(本文后面提到)
或者你放在其他地方,把配置文件里的路径都改成你对应的(本文后面提到),再把MinGW64里的gcc编译器路所在目录添加到环境变量,不会的参考上篇文章。
2.打开VSCode
默认大家都安装了VSCode,安装过程也十分简单,一路点击下一步就行。(你也可以自定义安装路径)
先安装几个必要插件,Chinese插件可以汉化软件,上面三个C/C++相关的可以提供C语言支持(不包括编译器),例如代码提示,路径检测等功能。
打开文件夹,这个文件夹里将保存你开发的项目工程,例如一堆.c .h文件。
我这里提前新建了一个test空文件夹。
打开后左边像这样。
新建一个main.c文件
写一个打印HelloWorld
可以看到没有代码提示,也检测不到头文件,这是因为,VSCode只是一个文本编辑器,就像记事本一样,所以我们要进行配置,才能使用。
但是,即使这样,我们依然可以使用命令行来调用gcc编译它,打开内置终端,它和系统自带的终端相同,你可以使用PowerShell或cmd等
在终端输入gcc main.c,可以看到编译后产生的可执行文件a.exe
然后在终端输入a.exe,可以看到,程序确实运行了。这也充分显示了编辑器、编译器、集成开发环境的区别。
但是这样,还没体现出VSCode的优势,我们希望它具有代码提示和语法检错这些功能。
3.配置VSCode——C语言
展开.vscode文件夹,他会在用户打开文件夹时自动添加。如果没有,那就自己新建一个 .vscode
文件夹
接下来,我们需要编写几个json文件。
首先在.vscode文件夹下创建这几个文件 c_cpp_properties.json 、launch.json、tasks.json。
然后把这些内容编写到对应文件中
c_cpp_properties.json
{
"configurations": [
{
"name": "Win64",
"includePath": [
"E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\include",
"E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\x86_64-w64-mingw32\\include",
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.22000.0",
"compilerPath": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "${default}"
}
],
"version": 4
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "c",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "c",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "c++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "c++",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "C多源文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "c多源文件",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "C++多源文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "cpp多源文件",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
]
}
3.tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "c",
"command": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
},
{
"type": "cppbuild",
"label": "c++",
"command": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
},
{
"type": "cppbuild",
"label": "c多源文件",
"command": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${fileDirname}\\*.c",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
},
{
"type": "cppbuild",
"label": "cpp多源文件",
"command": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${fileDirname}\\*.cpp",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
请注意,这三个文件里涉及到路径的都需要改成你对应的。比如下图这个地方,就需要根据个人存放路径修改。(如果你和我一样把mingw-w64放在E盘,那就可以不用修改)
总之,就是在你下载的MinGW64里找到gcc.exe和gdb.exe,并把这两个文件的绝对路径改到json配置文件里。
这个时候,我们就可以看到有了代码提示,也可以检测到头文件了。这里的system("pause")
是为了让终端停留,而不是一闪而过
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("helloworld\n");
system("pause");
}
点击左边这个图标,使用C(如果是C++(.cpp)文件就选择C++),然后点击绿色的三角形图标(或者F5),就可以编译运行代码了。
4.正常开发流程
1.新建工程文件夹
2.修改.vscode文件里的json配置文件。为了避免每次新建工程都要修改.vscode里的json文件,可以把之前写好的.vscode直接复制到新工程文件夹下。
3.开发
5.注意事项:
工程路径不要有中文,因为windows中文版默认是GBK编码的(可以在设置->时间和语言里改成Unicode,但不建议,这样会导致其他古老的软件乱码),用中文不易符合国际通用规范,容易出现错误。
不要有空格,想分隔用下划线_
。因为命令和命令参数之间是用空格隔开的。