一,Makefile的文件名
默认的情况下,make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件,大部分情况下,make命令都支持makefile和Makefile这两种命名。所以一般情况下都是将文件名命为这两个,没有后缀。
二,Makefile内容格式语法
目标名:依赖目标
@命令
@命令
三,make命令行的使用
1,通用情况:make -f make脚本文件 目标名,这种情况适用于没有使用makefile或Makefile文件名,而是使用其它格式的命名方式,如:
我们有一个demo.mk的Makefile文件,它里面有一个demo的目标名,那么我们的make命令行就是make -f demo.mk demo
当然我们需要先指明路径,用export LD_LIBRARY_PATH=. 如果Makefile里面使用了动态库,这样就指明该动态库是在当前的文件夹内,否则会出现undefined reference to的错误。
2,当Makefile的文件名为makefile或Makefile时,可以直接使用make 目标名
3,当要执行的目标名在文件的第一个目标时,可以直接使用make指令
四,目标的调用规则:(make把目标当作文件)
make执行目标:
搜索与目标相同的文件
如果文件存在,则判定日期。
日期最新,则停止执行,输出提示
日期不是最新,则进行执行。
比较:当前目标与依赖目标
五,变量
可以使用变量的方式来代替重复出现的文件名,定义的方式为:变量=值
调用的方式为:$(变量名) 或 ${变量}
六,伪目标
“伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成它的依赖关系和决定它是否要执行。
假设我们这有一个目标clean,它的定义是这样的
clean:
rm *.o //它将删除所有.o格式的文件
将clean声明为伪目标的格式为: .PHONY clean