目录
0 需求概述
重温C语言时,选择了vscode作为学习环境,因为Vs code是轻量级的编辑器(还有个重要的原因:VScode免费开源),想要获得一个比较好的体验,很多东西都需要自己配置。特别是最近遇到了引用自定义头文件的问题,所以想要从头到尾的记录下来。这里主要想实现如下几个需求:
-
在vs code中能够实现C语言的简单的Debug; -
能够引用自定义的头文件。
1 相关软件的下载安装
因为Vscode只是一个轻量级的文本编辑器,不像Visual Studio
那种IDE集成了编译环境,所以还需要自己安装编译环境,这里选择GNU项目的MINGW。
1.1 下载安装vscode软件
VSCODE官方地址:https://code.visualstudio.com/
选择“Stable Build”下载安装即可。
1.2 下载安装MINGW
官方下载地址:https://www.mingw-w64.org/downloads/
说明:这是 MinGW-w64 的下载详情页面。首先看到一个标题为 Pre-built toolchains and packages 的列表,这里面是包含 MinGW-w64 及特定工具的整合包。我们只想要安装 MinGW-w64 ,因此将页面下滑找到“SourceForge”超链接,就会进入 SourceForge 中的 MinGW-w64 下载页面。
2 配置C编译环境
测试的文件结构是这样:
test //工程文件夹
|---.vscode // 配置文件夹,一般包含task.json和launch.json两个配置文件
|---headers // 存放自己创建的头文件
|---test.c
|---...
2.1 安装C/C++插件
在扩展商店搜索并安装以下插件:
其他插件按需安装。
2.2 配置C编译环境
2.2.1 生成配置文件
-
首先在工程文件夹新建一个C源文件,假设为 test.c
:
#include <stdio.h>
int main(void)
{
printf("Hello World!");
return 0;
}
-
按 F5调试该源文件,在弹出的窗口选择 C++(GDB/LLDB)=>gcc.exe - 生成和调试活动文件
这时候,在当前文件夹会生成一个.vscode
文件夹,里面包含task.json
和launch.json
两个配置文件。
2.2.2 编辑配置文件
这个时候对于一般情况下的编译运行已经足够了,但是为了实现文首提出的需求,还需要对两个配置文件做相应的修改,这里给出两个配置文件的内容,可以根据自己情况进行修改。
**task.json
**文件:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "D:\\mingw64\\bin\\gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g", // 参数-g:可以使断点有效,输出异常信息,方便调试
"${file}", //主函数,当前打开的单文件
"${workspaceFolder}/header/*.c", // 编译头文件目录下的.c文件
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-I","${workspaceFolder}\\header" // 参数-I和工程路径,指明了项目中要引用的非标准头文件的位置
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
说明:
-
配置task.json的思路其实就是两个点:一是要将头文件声明中相关的.c文件进行编译;二是要添加头文件的路径 -
一般只需要修改一下 task.json
文件,添加头文件目录,同时需要进行编译
**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 - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe", // 用来调试程序的 debug 工具gdb.exe的路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe 生成活动文件"
}
]
}
3 附录:vscode预定义变量
VS code预定义变量:
${workspaceFolder} - 当前工作目录(根目录)
${workspaceFolderBasename} - 当前文件的父目录
${file} - 当前打开的文件名(完整路径)
${relativeFile} - 当前根目录到当前打开文件的相对路径(包括文件名)
${relativeFileDirname} - 当前根目录到当前打开文件的相对路径(不包括文件名)
${fileBasename} - 当前打开的文件名(包括扩展名)
${fileBasenameNoExtension} - 当前打开的文件名(不包括扩展名)
${fileDirname} - 当前打开文件的目录
${fileExtname} - 当前打开文件的扩展名
${cwd} - 启动时task工作的目录
${lineNumber} - 当前激活文件所选行
${selectedText} - 当前激活文件中所选择的文本
${execPath} - vscode执行文件所在的目录
${defaultBuildTask} - 默认编译任务(build task)的名字
同步发布于微信公众号:书山学海小仓库