怎么在Windows下使用Makefile文件
创始人
2024-04-15 09:17:44
0

前言:如果熟悉在Linux开发的话,肯定知道Makefile文件的用处,它给我们带来很多的便利。在Linux系统下并不会像Windows那么多开发工具,在Windows下,只要在开发工具上点击一个按钮,就能将工程的所有源码进行编译运行。而在Linux下,工程源文件的编写往往是使用一个简单的编辑器(VIM),然后通过Makefile文件进行自动化编译。而我接下来想说的是,如何在Windows上如同Linux般使用Makefile文件进行编译。可能有人觉得没那个必要,因为Windows的开发工具数不胜数,随便一个都非常好用,不可否认,懂得利用开发工具开发是可大大提高开发效率。当然,接下我是从基础的知识出发,不仅仅是对Makefile文件的学习,从中还可帮你解开以往的一些疑惑,或者让你学习到一些新的有趣的知识。

1.搭建环境

1.gcc编译器下载,TDM-GCC,打开根据自己电脑的类型选择合适的程序,我的是win7/32bit,所以选择下载第一个:

2.下载完成后,以管理员方式打开安装程序,点击Create后:

3.选择相应的版本,点击Next,接下来会选择安装路径,自己随便选择一个不带中文的路径就行。

4.最后点击Install进行安装,安装完成后,可以在自己设置的安装路径下有这么一个文件夹“TDM-GCC-32”,接下来配置环境变量。打开控制面板 > 系统和安全 > 系统 >高级系统设置 > 环境变量:

添加系统变量,变量值是自己刚刚选择的安装路径,我安装在C盘,如下图:

找到变量Path,在后面加入 “;%GCC_PATH%\bin”,如图:

点击确定保存设置。

5.点击电脑桌面左下角,搜索cmd,以管理员身份打开cmd.exe,输入“gcc -v”:

得到如上输出可确认gcc编译器已正确安装,版本是5.1.0。

6.继续输入“mingw32-make -v”:

相对于Linux的make不同,这里是mingw32-make,在cmd里用cd命令切换在Makeflie文件所在目录,命令行输入mingw32-make回车运行,就行执行Makefile文件,进行自动化编译。

2.执行一个简单的Makefile文件:

1.将下面各个文件保存在同一目录下:

"src_a.c"
#include "stdio.h"
void funca()
{printf("funca runing!!!\r\n");
}"src_b.c"
#include "stdio.h"
void funcb()
{printf("funcb runing!!!\r\n");
}"src_c.c"
#include "stdio.h"
void funcc()
{printf("funcc runing!!!\r\n");
}"main.c"
#include "stdio.h"
extern void funca();
extern void funcb();
extern void funcc();
int main()
{funca();funcb();funcc();
}"Makefile"
mian : main.o  src_a.o src_b.o  src_c.ogcc main.o src_a.o src_b.o src_c.o -o mainmain.o : main.cgcc main.c -c -o main.osrc_a.o : src_a.cgcc src_a.c -c -o src_a.osrc_b.o : src_b.cgcc src_b.c -c -o src_b.osrc_c.o : src_c.cgcc src_c.c -c -o src_c.o.PHONY : clean
clean:del *.o main.exe -rf

Makefile可以暂时不用理解,这里只是一个简单通俗的例子。

所有文件创建完成如下:

2.打开cmd,切换到以上的目录,输入“mingw32-make”:

得到main.exe可执行文件,输入main.exe回车运行:

然后在资源管理器里查看Test目录会发现多了一些编译的过程文件(.o):

cmd输入命令“”mingw32-make clean”,将输出文件删除:

到此,我可以在Windows下利用CMD命令通过Makefile对源文件进行编译运行了。

环境搭建好了之后,再从学习gcc命令开始,才能逐步理解Makefile文件。

【推荐阅读】

virtio-net 实现机制【一】(图文并茂)

浅析linux内核网络协议栈--linux bridge

深度解析linux内核模块编译makefile

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...