1、变量值的替换
src := a.cc b.cc c.cc
obj := $(src:cc=0)
将src变量中的cc字符全部替换成o 赋值给obj
obj => a.o b.o c.o
2、变量的模式替换
src := a1b.c a2b.c a3b.c
obj := $(src:a%b.c=x%y)
将src变量中的a%b.c 替换成x%y,%为通配符,代表一个字符串不改变
obj -> x1y x2y x3y
3、规则中的模式替换
OBJS := func.o main.o
$(OBJS) : %.o : %.c
gcc - o $@ -c $^
先将OBJS变量进行 %.o 匹配出 .o文件
func.o main.o : %.c
然后对每一个目标生成依赖 替换成.c文件
func.o : func.c
gcc -o $@ -c $^
main.o : main.c
gcc -o $@ -c $^
4、变量值的嵌套引用
两次对变量取值
5、命令行变量
6、voerride
7、define
8、小结
9、
CC := g++
TARGET := hello-makefile.out
OBJS := func.o main.o
$(TARGET) : $(OBJS)
$(CC) -o $@ $^
$(OBJS) : %.o : %.c
$(CC) -o $@ -c $^
.PHONY : rebuild clean all
rebuild : clean all
all : $(TARGET)
clean :
$(RM) *.o $(TARGET)
输出:
make
g++ -o func.o -c func.c
g++ -o main.o -c main.c
g++ -o hello-makefile.out func.o main.o