Makefile、
makefile主要规则:
#伪对象
.PHONY : clean
#规则1
main : main.o
gcc main.o -o main
#规则2
main.o : main.c
gcc -c main.c -o main.o
#规则3
clean :
rm main *.o
如上图所示这个makefile有3个规则,从上述代码可以看出makefile的通用规则。例如规则1,“main”是目标,“main.o”是依赖,“gcc main.o -o main”是命令。makefile的一般规则格式就是:
目标 : 依赖
命令
注意的是命令之前的不是空格而是Tab键。
规则表达的含义:如果目标的更新时间比依赖的更新时间要晚,那么就执行命令。当依赖为空时,就判断目标是否存在,如果不存在就执行命令。当目标是个伪对象(下面会解析伪对象)那么就直接执行命令。当执行“make main”的时候就是执行规则1。如果运行“make”就默认执行第一条规则,也就是规则1。
伪对象:目标可以是个文件也可以是个伪对象。伪对象的含义就是一个名字,表达规则的目标。如果运行make程序的目录中存在一个与伪对象名字一样的文件,那么make程序不知道这个名字是文件还是伪对像。“.PHONY : clean”就是用于告诉make程序,clean是个伪对象而不是文件。如果没有这个声明,make程序会把clean当做是文件,所以如果存在clean文件的时候,那么运行这个规则的时候就会当做文件存在而不执行命令。
变量:
.PHONY : clean
CC = gcc
RM = rm
EXE = main
SRCS = main.c
$(EXE) : $(SRCS )
$(CC) $(SRCS ) -o $(EXE)
clean :
$(RM) -rf .