Makefile的核心
2021-10-31 本文已影响0人
懒生活
Makefile的核心
Makefile最重要的是描述文件的依赖关系
target: components
tab rule
第一行表示依赖关系,会声明目标和依赖文件,第二行表示rule。当依赖文件发生变化的时候,目标文件怎么生成,是通过rule描述的。注意rule之前必须有且只有一个tab。
makefile语法中用$@
表示目标文件, 用$^
表示所有依赖文件,用$<
表示第一个依赖文件。这样表示方便一些通用规则的编写。比如规则gcc -o $@ $^
这就表示把所有依赖的o文件都链接起来成目标文件。
语法
两个函数 wildcard patsubst
SRC = $(wildcard ./*.c)
表示匹配目录下所有的c文件,并将其赋值给SRC变量。
OBJ = $(patsubst %.c, %.o,$(SRC))
取出SRC中所有值,然后将.c
替换成.o
,最后赋值给OBJ变量。等效于OBJ = $(SRC:%.c=%.o)
。
.c.o:
这个表示所有的.c文件都依赖于同名的o文件。