前言:如果熟悉在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.o
	gcc main.o src_a.o src_b.o src_c.o -o main

main.o : main.c
	gcc main.c -c -o main.o

src_a.o : src_a.c
	gcc src_a.c -c -o src_a.o

src_b.o : src_b.c
	gcc src_b.c -c -o src_b.o

src_c.o : src_c.c
	gcc 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文件。

 

 

推荐阅读:Makefile文件详解一(gcc命令参数详解)

 

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐