本文目的:
1、vscode编译C语言代码
2、C语言的代码,分成多个目录:include、src
代码准备工作
1、新建目录
vscode是不能直接新建工程的,需要先新建目录,存放代码
2、打开vscode,File --> Open Folder… --> 选择上面新建的test_vscode文件
test_code就是之后的开发目录
3、新建 .c、.h 代码文件
以新建main.c文件为例:File --> New File --> Ctrl+S保存 --> 修改文件名main.c保存。
注解:本文新建了3个文件,分别是main.c、math.c、math.h,目录结构见下(目录分层)。
math.h
#ifndef _MATH_H
#define _MATH_H
int add(int a,int b);
int sub(int a,int b);
#endif
math.h
#include "math.h"
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
main.c
#include "math.h"
#include <stdio.h>
int main(void)
{
int a=20;
int b=10;
printf("add(%d,%d)=%d\n",a,b,add(a,b));
printf("sub(%d,%d)=%d\n",a,b,sub(a,b));
}
launch.json
1、F5 --> C++(GDB/LLDB) -->Default Configuration --> 生成 .vscode/launch.json文件
2、 复制下面launch.json文件的内容,替换生成的默认文件
(1) “miDebuggerPath”: “C:\cygwin64\bin\gdb.exe”,//调试器路径,在Linux环境下需要注释掉这一行
(2) “program”: “
w
o
r
k
s
p
a
c
e
R
o
o
t
/
{workspaceRoot}/
workspaceRoot/{fileBasenameNoExtension}.exe”,//可执行文件的路径和文件名称
(3) “args”: [],//主函数调用时传入的参数 --> “args”: [“file1”, “file2”]
(4) “environment”: [],
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "2,0.0", //配置文件的版本,以前使用是0.2.0,新版本已经弃用,改用为2.0.0
"configurations": [ //配置域
{
"preLaunchTask": "Build", //调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
"name": "(gdb) Launch", //配置文件的名字,可以随便起
"type": "cppdbg", //调试的类型,Vscode现在支持很多,我这里主要是C,所以只能是cppdbg
"request": "launch",//配置文件的请求类型,有launch和attach两种,具体看官方文档
"targetArchitecture": "x64", //硬件内核架构,为64bit,如图设置
"program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",//可执行文件的路径和文件名称
"args": [],//主函数调用时传入的参数 --> "args": ["file1", "file2"]
"stopAtEntry": false,//设为true时程序将暂停在程序入口处
"cwd": "${workspaceFolder}",//调试时的工作目录
"environment": [],
"internalConsoleOptions": "openOnSessionStart",//
"externalConsole": true,//调试时是否显示控制台窗口
"MIMode": "gdb",//指定连接的调试器,可以省略不写
"miDebuggerPath": "C:\\cygwin64\\bin\\gdb.exe",//调试器路径,在Linux环境下需要注释掉这一行
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
}
]
}
task.json
1、再次点击F5,弹出下面弹窗,选择Configure Task
2、选择Create task.json file from template
3、选择 Others ,会在.vscode目录下,生成 tasks.json 文件
4、复制下面内容,粘贴到 task.json 文件中
(1) 头文件
(2) 源文件
{
"version": "2.0.0",
"tasks": [
{
"label": "Build", // 任务名称,与launch.json的preLaunchTask相对应
"includePath": [
"${fileDirname}/include/" // --> 修改为.h文件路径
],
"command": "gcc", // 要使用的编译器
"args": [
"-g", // 生成和调试有关的信息
"${file}", //在哪个文件的视图上选择仿真,则选择哪个文件
"${fileDirname}/src/math.c", // --> 修改为.c文件路径
"-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
"${fileDirname}/${fileBasenameNoExtension}.exe",//选择输出的文件名称,和前面的${file}是对应的,一般默认的名称就是前面的${file}.exe
"-Wall", // 开启额外警告
], // 编译命令参数
"type": "shell", // 可以为shell或process,前者相当于先打开shell再输入命令,后者是直接运行命令
"group": {
"kind": "build",
"isDefault": true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件
},
"presentation": {
"echo": true,
"reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never。具体参见VSC的文档
"focus": false, // 设为true后可以使执行task时焦点聚集在终端
"panel": "shared" // 不同的文件的编译信息共享一个终端面板
},
}
]
}
5、最后,再次运行F5,代码就会执行。