配置初衷
作为vscode重度使用患者,笔者希望vsocde可以大一统所有代码环境hhh。。。
对于经典的C/C++集成IDE,例如visual studio等,可以一键配置运行环境,但是集成度太高,整个运行的环境像是黑盒,也不利于文件的灵活配置;使用vscode对代码的操作就像搭积木一样,笔者认为这样可以让工程师对于代码和项目的掌控度更高。
运行单个C语言文件
运行单个C文件配置比较简单,需要在vscode的插件商店下载以下扩展插件:

具体的步骤可以参考以下网址进行配置:集成开发环境搭建
单个C文件的配置不属于本篇文章的重点,这里不做详细介绍。
完整C代码项目配置
创建一个简单的C代码项目,文件夹结构如下:
0715_project
|____app
| |____main.c
|
|____src
| |____func.c
|
|____inc
| |____func.h
|
|____bin
其中,0715_project是存放整个C代码项目的文件夹,main是存放主函数的文件夹,src是存放函数源文件的文件夹,inc是存放函数头文件的文件夹,bin是存放C项目生成的.exe文件的文件夹,在代码未运行的时候,这个文件夹为空。
此处需要注意的是,由于.vscode配置文件的默认生成路径是在当前vscode的打开路径下面,vscode的打开路径必须是0715_project,否则当json配置文件中的${fileDirname}会影响系统找到指定要编译的C代码文件。
这里的func文件实现两个简单的功能,分别是字符串打印和uint8类型数据的加法运算,各文件的代码如下:
func.h文件
# ifndef __FUNC__
# define __FUNC__
# include <stdio.h>
# include <stdint.h>
void say_hello(void);
uint8_t add(uint8_t a, uint8_t b);
#endif
func.c文件
# include <stdio.h>
# include "../inc/func.h"
void say_hello(void)
{
printf("hello!\n");
printf("vscode can run total C peoject!\n");
}
uint8_t add(uint8_t a, uint8_t b)
{
return a+b;
}
main.c文件
# include <stdio.h>
#include "../inc/func.h"
int main(void)
{
say_hello();
uint8_t a = 12;
uint8_t b = 23;
uint8_t res = add(a,b);
printf("%d+%d=%d",a,b,res);
return 0;
}
按照文件路径保存之后,对主函数main.c进行编译

第一次运行会报出错误,不用担心,点击debug anyway后打开vsocde生成的配置文件.vscode,首先是launch.json,把以下内容复制过去
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${cwd}//bin//${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\x86_64-14.2.0-release-posix-seh-ucrt-rt_v12-rev0\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe build active file"
}
]
}
其中需要更改的是字段“miDebuggerPath”对应的值,替换为本地的MinGW的路径,一般是在保存路径的bin文件夹中的gdb.exe。
task.json文件更改如下:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "D:\\x86_64-14.2.0-release-posix-seh-ucrt-rt_v12-rev0\\bin\\gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
// "${file}",
"${cwd}\\src\\*.c",
"${cwd}\\app\\*.c",
"-o",
// "${fileDirname}\\${fileBasenameNoExtension}.exe"
"${cwd}//bin//${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
重点需要关注的信息如下:

标号1更改为MinGW的gcc.exe文件路径,一般也是在安装路径的bin文件夹下;
标号2是需要编译的源文件,其中${cwd}表示json文件所在的文件路径,不包含本身的文件名,${fileDirname}指当前运行C文件所在目录路径,*.c表示指定文件夹下的所有.c文件;
标号3表示最终生成的exe文件存放的位置;
把一切配置好后 ,在点击编译运行,即可完成编译多个C语言文件的功能。

从结果来看,vsocde可以完成在主函数定义的任务,即打印指定的字符串和进行uint8_t类型的加法运算。
1012

被折叠的 条评论
为什么被折叠?



