MakeFile
1.基本语法规则:
目标:依赖文件
[Tab]command
或 目标:依赖文件; command
2.伪目标
.PHONY: 目标
特点:伪目标的特点为总是被执行,故其依赖的目标总不如改目标新
应用:
1.无依赖文件
.PHONY:clean
clean:
commands
没有依赖文件,文件"clean"始终是最新的,命令永远不会执行;为避免这个问题,可使用".PHONY"指明该目标。
避免和同名文件冲突(防止存在和PHONY执行目标的名称相同的文件, 避免和文件名重名),显示指出文件为伪目标,make clean
2.有依赖文件
all: prog1 prog2 prog3
.PHONY: all
prog1: prog1.o utils1.o
cc -o prog1.c utils1.c
prog2: prog2.o utils2.o
cc -o prog2.c utils2.c
prog3: prog3.o utils3.o
cc -o prog3.c utils3.c
输入make后,生成所有的文件
3.自动生成依赖性
main.o:main.c (defs.h可省略)
gcc -MM main.c
4.忽略错误
exec:
-cd /home/zhangfan
pwd
5.变量
objects = program.o foo.o utils.o
program: $(objects) 会展开
定义变量用“=”,导致下文中对变量的定义影响上文
“:=” 使得前面的变量不能使用后面的变量
6.通配符
objects = $(wildcard *.o) *为通配符
7.define关键字
define two-lines
echo foo
echo $(bar)
endef
8.override指示符
变量为通过make命令行参数设置,则Makefile将忽略这个变量的赋值,若想在Makefile中设置这类参数的值则使用override
override <variable> = <value>
override <variable> := <value>