版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dongkun152/article/details/86700621
Makefile 知识点记录
1. 依赖类型:normal Prerequisites,order-only prerequisites
normal Prerequisites:标准依赖具有两层含义的声明,一 它声明了方法运行的顺序,所有依赖的的方法必须在对象的方法运行之前运行完。二 它声明了对象的依赖关系,如果有任何依赖比对象新,那么目标对象就认为是过期的,必须要重建。
order-only prerequisites:顺序依赖,只取标准依赖的声明一。它只声明顺序关系。不会因为依赖的时间戳的更新而重建。
标准依赖和顺序依赖的声明方式如下
targets : normal-prerequisites | order-only-prerequisites
依赖之间用管道符号分隔,左边的是标准依赖,右边的是顺序依赖。
例子:
OBJS := date_test
.phony: all clean
all: $(OBJS)
$(OBJS): date.c | version
$(CC) -o $@ $<
version:
date | xargs echo > version
clean:
rm -f $(OBJS) version
上面的例子中,编译对象依赖于version,但是不会因为向version中手动添加记录而导致后边的重新编译。 date.c 是标准依赖, version是顺序依赖。