Make
http://www.ruanyifeng.com/blog/2015/02/make.html
Makefile 文件由一系列规则构成,每条规则的形式如下:
<target>: <prerequisites>
[tab] <commands>
target(目标)
target 通常是文件名,指明 Make 命令所要构建的对象,可以是一个文件名,也可以是多个文件名,之间用空格分隔
main.o:
gcc -c main.c
上面代码意思为:只要 main.o 文件不存在,那么就执行下面的命令
除了文件名,target 还可以是某个操作的名字,称为「伪目标」(phony target)
clean:
rm *.o
当输入 make clean
命令之后,所有对象文件就会被删除
但是如果当前目录中正好用一个文件叫做 clean, 那么这个命令就不会执行。
因为 Make 发现 clean 文件以及存在,就认为没有必要重新构建了,也就不会执行下面的命令
为了避免这种情况,可以明确声明 clean 是「伪目标」
.PHONY: clean
clean:
rm *.o
声明 clean 是「伪目标」之后, Make 就不会去检查是否存在一个叫 clean 的文件, 而是每次运行都执行对应的命令
如果只运行 make
命令而不加参数,那么 Make 会执行 Makefile 文件的第一个目标
prerequisites(前置条件)
前置条件通常是一组文件名,之间用空格分隔。 只要用一个前置文件不存在,或者有过更新(前置文件的 last-modification 时间戳比目标的时间戳新),目标就需要重新构建
main.o: main.c compress.h
gcc -c main.c