vscode makfile编译c程序
如果上面没有出现编辑配置(UI),则可以选择其他版本重新安装。选择编辑配置后多了.vscode。选择.c文件,选择终端配置。
编译工具安装
为了在 Windows 上安装 GCC,您需要安装 MinGW-w64。
MinGW-w64 是一个开源项目,它为 Windows 系统提供了一个完整的 GCC 工具链,支持编译生成 32 位和 64 位的 Windows 应用程序。
1. 下载MinGW-w64源代码,如图点击进去可以下载源代码,但是由于网页更新后,该路径没有编译好的安装包。
访问 MinGW-w64 的主页 mingw-w64.org,进入 MinGW 下载页面 Downloads - MinGW-w64,下载最新版本的 MinGW-w64 安装程序。

2.下载mingw-builds-install.exe安装,改方法可能没法下载
https://sourceforge.net/projects/mingwbuilds/files/mingw-builds-install/

3.下载绿色版本的MinGW-w64,解压并把路径加入环境变量即可使用,下载链接如下:
所以演示绿色版的安装过程,绿色版只是需要添加环境变量,将绿色版解压到D盘根目录,如下下载后解压即可直接使用;


把存放的路径比如当前存放置:D:\mingw64\bin 加入环境变量

win+R,输入 cmd,进入windows命令行模式。输入 gcc -v 或者gcc --version,可以查看gcc安装情况
vscode安装
isual Studio Code虽然它是一个通用的文本编辑器,但它有很多插件支持 C/C++ 开发,使其成为一个流行的选择,通过安装 C/C++ 插件和调整设置,你可以使其成为一个很好的 C 语言开发环境。
1. 安装包下载地址
VScode 官网地址:https://code.visualstudio.com/
VScode 官方文档地址:https://code.visualstudio.com/docs
下载想要的格式包链接:
Download Visual Studio Code - Mac, Linux, Windows

2. 安装教程
VSCode 安装很简单,点击 Next,傻瓜式安装;
注意安装路径设置、环境变量默认自动添加到系统中,勾选以下所有选项:

vscode插件安装
比如安装汉化包,VScode 安装汉化包很简单,打开 VScode,点击安装扩展,在搜索框输入 Chinese,然后点 Install 就可以。

【设置】-打开命令面板

输入Chinese会自动联想出来Configure Display Language

点击Configure Display Language 选择中文简体

弹出重启框点击restart

vscode编译C程序
1.配置C/C++环境,安装C/C++插件(安装Microsoft自家的)。点击插件,搜索“C”,点击“install”:

下载以后,重启VSCode,如果提示你需要安装一些其他C/C++扩展,选择是就可以
2.新建一个main.c文件,并输入c代码

3. vscode界面,文件->文件夹,选择打开上面的D:\c_code文件夹,会默认生成.vscode文件夹。

3.运行代码
【1】点击如图控件

【2】选择第一个,就会在终端就输出编译 结果,同时生成了一个task.json的文件

或者,点击"Terminal"->Run Build Task,在配置的目录生成可执行文件"main.exe",在终端命令行模式运行可执行文件。

或者,界面右键,点击“Run Code”,即可运行该C代码(单个文件可以这样运行程序)

配置文件和编译调试选项
想要在 VS Code 中运行和调试 C/C++ 程序,涉及三个配置文件:tasks.json、launch.json 和 c_cpp_properties.json。这三个配置文件一起提供了一个完整的 C/C++ 开发环境的配置。
- tasks.json 文件用于配置任务(例如编译)
- launch.json 文件用于配置调试器
- c_cpp_properties.json 文件用于配置 IntelliSense 功能
tasks.json 文件
tasks.json可以修改为如下,对应注释部分
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "D:/mingw64/bin/gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
//"*.c",//可以屏蔽上句,这一句代表编译当前目录下所有后缀都是.c的文件
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
//上面那句改为 "${fileDirname}\\allfile.exe",生成的可执行文件全部叫做allfile.exe,如果想改回来,把这一句注释掉,然后把上一句取消注释就行了
""
],
"options": {
"cwd": "D:/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
如果打程序所在开文件夹默认没有生成.vscode,则tasks. json文件生成步骤如下:
1.选择.c文件,选择终端配置。

2. 选择如图部分
或者点击小齿轮,选择如下部分,即可生成tasks.json.

3. 生成了如下配置文件
4.把配置文件修改为自己的样式,用于生成可执行文件
5.运行代码,生成可执行文件

6. 生成任务成功后,打开PowerShell,运行生成的文件(如果运行不成功,可能是由于gcc环境变量是新配置的,重启一下vscode即可生成成功)!


7. 如果需要在终端输入所以需要使能code runner的Run In Terminal功能。

launch.json文件
1.点击如图图标,点击创建launch.json文件


点击右下角:
2. 修改launch.json的配置,如修改如下注释部分,注意是修改编译生成的可执行文件路径和名称;以及gdb.exe调试器的路径。
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"externalConsole": true,
"cwd": "d:/c_code",
// "program": "d:/c_code/build/Debug/outDebug",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
//上面一句是tasks.json中设置好的可执行程序,如果没有按照我上一步来设置tasks.json,不要动这里
"MIMode": "gdb",
// "miDebuggerPath": "gdb",
"miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe",
//上一句是指你的gdb路径,把之前让你加入环境变量的路径复制过来,然后加上gdb.exe,然后把单斜杠\换成双斜杠\\!!!!!
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
3.点击 “Run” ->“Start Debugging”,或者点击左侧 “Run and Debug” 按钮打开运行和调试窗口,点击窗口上方 Launch 旁边的绿色小三角按钮开始调试(也可以直接按 F5 键进入调试模式)。开始调试代码。按调试按键,单步执行,即可查看调试信息,变量值变化等!
注意一定要先设置断点!

c_cpp_properties.json 文件
c_cpp_properties.json 文件不是必须的,主要用于配置 C/C++ 扩展的 IntelliSense 设置,指定编译器路径、标准库路径、头文件路径、宏定义等信息。它影响的是编辑器对代码的智能提示、语法检查等功能,而不是编译任务。
创建 c_cpp_properties.json 文件的方法是:通过快捷键 Ctrl + Shift + P 打开执行命令的输入框,输入 “C/C++”,选择 “C/C++: 编辑配置(JSON)”。

如果上面没有出现编辑配置(UI),则可以选择其他版本重新安装。

选择编辑配置后多了.vscode

进行相关项配置:


生成如下配置:

多文件编译
如有如下的c程序文件:
add.c:
#include <stdio.h>
int add_function(int a,int b)
{
int sum = a+b;
printf("add_function,a + b,a = %d,b =%d\n",a,b);
return sum;
}
add.h:
#ifndef __ADD__H
#define __ADD__H
int add_function(int a,int b);
#endif
div.c:
#include <stdio.h>
int div_function(int a,int b)
{
int div = a/b;
printf("div_function,a / b,a = %d,b =%d\n",a,b);
return div;
}
div.h:
#ifndef __DIV__H
#define __DIV__H
int div_function(int a,int b);
#endif
main.c:
#include <stdio.h>
#include "add.h"
#include "div.h"
int main()
{
printf("Hello, World! \n");
int sum = add_function(1,2);
printf("sum 1 + 2 = %d\n",sum);
int div = div_function(10,2);
printf("div 10/2 = %d\n",div);
return 0;
}
多文件放置同一目录
主程序包含相应头文件,调用其他函数即可即可。点击右上角的三角形,点击"Run C/C++ file”,即可运行程序。

对应的tasks.json的配置如下:
${workspaceFolder} - 在VS Code中打开的文件夹的路径
${workspaceFolderBasename} - VS Code中打开的文件夹名称,不带任何斜杠(/)
${file} - 当前打开的文件
${relativeFile} - 当前打开的相对于workspaceFolder的文件
${relativeFileDirname} - 当前打开文件的目录名(相对于workspaceFolder)
${fileBasename} - 当前打开的文件的基本名称
${fileBasenameNoExtension} - 当前打开的文件基本名称,不带文件扩展名
${fileDirname} - 当前打开的文件的目录名
${fileExtname} - 当前打开文件的扩展名
${cwd} - 启动时任务运行程序的当前工作目录
${lineNumber} - 活动文件中当前选择的行号
${selectedText} - 活动文件中当前选定的文本
${execPath} - VS Code可执行文件的路径
${defaultBuildTask} - 默认构建任务的名称
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "D:/mingw64/bin/gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g","${workspaceFolder}\\*.c",//这一句代表编译当前目录下所有后缀都是.c的文件
"-I", "${workspaceFolder}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
//上面那句改为 "${fileDirname}\\allfile.exe",生成的可执行文件全部叫做allfile.exe,如果想改回来,把这一句注释掉,然后把上一句取消注释就行了
],
"options": {
"cwd": "D:/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
另外的运行方法:点击"Terminal"->Run Build Task,在配置的目录生成可执行文件,在终端命令行模式运行可执行文件。

多文件在不同目录

1. 修改tasks.json文件:
在.vscode文件夹中会出现tasks.json文件,打开该文件,在args中添加如下内容:
"-g", "${workspaceFolder}\\*.c",
"-g", "${workspaceFolder}\\div\\*.c",
"-I", "${workspaceFolder}",
"-I", "${workspaceFolder}\\div",
注释掉如下内容:
//"${file}",
上述内容的解读如下:
-
"-g"用于添加源文件路径,类似于在IDE中添加Source Folder; -
"-I"用于添加源文件的头文件,类似于IDE中设置Include Path。
2. 执行程序编译运行,点击右上角的三角形,点击"Run C/C++ file”,即可运行程序。

另外的运行方法:点击"Terminal"->Run Build Task,在配置的目录生成可执行文件,在终端命令行模式运行可执行文件。

使用makefile编译
make 环境搭建
1. make 安装
如图,把minw64的安装目录下的mingw32-make.exe复制一份,命名为make.exe,即可在命令行使用make。

2.make -v 查看是否make生效

Makefile编写和执行make编译
工程目录下新建Makefile文件;把前面新建的.c文件通过make命令编译;
第1种:Makefile简单编写如下:
calc:add.o div.o
gcc add.o div.o main.c -o calc
add.o:add.c
gcc -c add.c -o add.o
div.o:div.c
gcc -c div.c -o div.o
执行编译:

第2种Makefile实现:
由于windows不能使用rm 等linux命令,故需要借助rm.exe等工具实现!解压win_make_tools,并把该路径 D:\win_make_tools 加入环境变量!加入后需要重启vscode,否则一种没法实现rm -rf命令!工具包下载链接:
https://download.csdn.net/download/weixin_42107504/91597692?spm=1001.2101.3001.9500
Makefile文件修改为如下格式:
# 指令编译器和选项
CC :=gcc
RM := rm -rf
# 宏定义
DEFS = -DTEST_A -DTEST_B=1
CFLAGS += $(DEFS)
SRC_C := $(wildcard *.c)
OBJ_C := $(patsubst %.c,%.o,$(SRC_C))
OBJS +=$(OBJ_C)
calc:$(OBJS)
$(CC) $(CFLAGS) $^ -o $@ $(INC)
clean:
@echo do clean ...
$(RM) *.o calc.exe
执行编译:

第3种Makefile实现:
Makefile文件修改为如下格式,对应的文件放在add,div目录,增加头文件路径包含,手动加载需要编译的.c文件(也可以使用脚本函数改为自动)。
CC :=gcc
RM = rm -rf
DEBUG = -g -O1
CFLAGS = -Wall -c
TARGET :=calc
#当前路径转换为绝对路径
export ROOT = $(abspath .)
#手动加入要包含的.h头文件
export INCLUDES += \
-I$(ROOT) \
-I$(ROOT)/add \
-I$(ROOT)/div \
#手动加入要包含的.c文件
OBJS+= \
main.o \
./add/add.o \
./div/div.o \
$(TARGET):$(OBJS)
$(CC) $^ -o $@
%.o:%.c
$(CC) $(INCLUDES) $(CFLAGS) $< -o $@
.PHONY: clean rebuild all
rebuild: clean all
all : $(TARGET)
clean:
echo root $(ROOT)
$(RM) $(TARGET) $(DEL_OBJECTS)
make编译,执行可以执行文件 
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐




所有评论(0)