1 makefile基础
注意事项:
- 目标,依赖、命令
- makefile报错,需要用tab键,而不是空格
- 先执行依赖,再执行目标
- 项目中需要对可能存在的对象,需要指定伪对象
#目标:依赖
.PHONY: test
CC = gcc
#依赖关系是从左到右
OBJS = main.o foo.o
all:test
#命令
@echo "hello all"
test:
@echo "hello all"
2 makefile自动推导
有了前面的基础,配合自动推导符可以大大提高makefile的通用性。
$@:目标
$^:所有先决条件
$<:第一个先决条件
#当文件中存在干扰名称时,需要声明伪对象
.PHONY: clean
CC = gcc
RM = rm
EXE = simple
#SRCS = main.c foo.c
#通配符匹配所有的c文件
SRCS = $(wildcard *.c)
# 把.c换成对应的.o
#通配符替换所有的源文件变量c文件替换为o文件
#OBJS = foo.o main.o
OBJS = $(patsubst %.c,%.o,$(SRCS))
$(EXE): $(OBJS)
$(CC) -o $@ $^
%.o: %.c
$(CC) -o $@ -c $^
clean:
$(RM) $(EXE) $(OBJS)