makefile的编写规则:
生成文件:依赖文件
[\t](按tab键) 执行的shell命令
例: #Makefile
main:main.c
gcc main.c -o main
makefile的执行规则:
当makefile编写完毕,保存退出后,直接敲击make命令,那么make这命令所对应的程序会到当前目录下找到makefile文件,然后按照makefile中记录的编译规则来完成最终项目的编译。因此makefile文件名字只能叫Makefile,Makefile会记录源文件和程序文件的时间信息,如果源文件的最后一次修改时间是在程序文件之后那么就会重新编译程序,否则将报告程序是最新的而不需要重新编译。make永远只生成第一个对象,执行完位生成对象所要执行的命令后就退出了,所以不会再生成第二个对象。
如果makefile有多个要生成的对象,那么就需要在最上边定义一个对象,将要所有生成的对象都作为这个对象的依赖对象
例: #Makefile
all:exit exec
exit:exit.c
gcc exit.c -o exit
exec:exec.c
gcc exec.c -o exec
- 伪对象:
.PHONY叫声明伪对象,伪对象代表每次都需要重新生成
make可以指定生成要生成的对象
例:#makefile
.PHONY:exit
exit:exit.c makefile中得预定义变量
- 在makefile中$符号用于使用一个变量
a=1
b=$a
例 #makefile
a = exit exec
all:$(a)
exit:exit.c
gcc exit.c -o exit
exec:exec.c
gcc exec.c -o exec
- $@ 冒号左边要生成的对象
- $^ 冒号右边所有的依赖对象
- $< 冒号右边依赖对象中得第一个
例 #makefile
main:main.c
gcc $^ -o $@