makefile 实际是调用了make程序,而make会搜索当前目录下的Makefile(makefile)
文件,根据makefile来编译程序。
makefile写好之后,所有步骤都交给make程序就行了,只需要一条make就行
就百度搜索,有一篇经典的makefile的文章,大部分都是转载的这篇
比如这篇
以一个小白的眼光来看,makefile至少要知道以下几点:
变量的使用
makefile中的变量比较像c语言中宏替换,等号左边是变量,右边是值
如果要对一个变量取值,就要$(变量名)
如果要得到当前目录的绝对路径,需要调用shell函数1
2
3FILEPATH = $(shell pwd)
BIN = $(FILEPATH)/bin
.....
makefile的规则
主要的编译结构如下所示
target…:prerequisites…
command
比如1
2main : *.c
gcc $+ -o $@
$+代表冒号左边的,$@代表冒号右边
*.c代表当前目录下的所有以.c结尾结尾的文件
一般来说makefile要是能够成功执行,就不会往后执行,所以,执行的最后一步是
写在最开始的,make程序会往后查找,并执行之后的程序
makefile的自动推导
如下1
2%.o : %.c
gcc -c $+ -o $@
make程序会自动查找当前目录下的.c结尾的文件,并编译成.o结尾的文件