最近在 github上看了一些小的开源代码,发现不错就打包下载(download zip)。
在我打包下载的这些代码中,总会出现一个Makefile文件。之前经常接触Makefile,没有深究过,也没有用过。最近经常碰到Makefile,开源代码也需要用到Makefile,所以今天就对这个Makefile做一个总结和学习。
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
Makefile是一种描述文件,在一个项目中有很多源文件,相互之间依赖关系很复杂。makefile能简单明了的理顺各个源文件的关系,极大提高程序开发效率。
我们一般在Linux中经常看到项目用有Makefile,而在windows中很少看到,原因是因为windows上的IDE工具已经帮你自动生成了Makefile,编译工程的时候自动调用Makefile进行编译,所以在windows上我们经常是在不知情的情况下经常更Makefile打交道。
那么Makefile里的内容到底是些什么东西呢?
Makefile规定如何生成目标文件,所依赖的文件及生成的命令等。
makefile的基本语法规则如下:
目标文件 : 目标所依赖的文件
command
注意:如果command不和目标文件所在一行时,在command前要加tab键
例子:
1.定义一个fun.h头文件
#ifndef _FUN_H
#define _FUN_H
extern int fun1(void)
extern int fun2(void)
extern int fun3(void)
#endif
2.定义一个fun.c文件
#include<stdio.h>
int fun1()
{
printf("This is first function!\n");
return 0;
}
int fun2()
{
printf("This is second function!\n");
return 0;
}
int fun3()
{
printf("This is third function!\n");
return 0;
}
3.定义一个mian.c文件
#include<stdio.h>
#include<stdlib.h>
int main()
{
fun1();
fun2();
fun3();
return 0;
}
为了编译上面这个项目,我们编译Makefile如下:
edit : main.o fun.o
cc -o edit main.o fun.o
mian.o : main.c
cc -c mainn.c
fun.o : fun.c fun.h
cc -c fun.c
clean:
rm fun.o main.o
保存Makefile,在Makefile目录下键入命了 make,编译器就会开始编译这个项目了。