隐式规则:
C编译:.c变为.o $(CC) -c $(CPPFLAGS) $(CFLAGS)
C++编译:.cc或.c变为.o $(CXX) -c $(CPPFLAGS) $(CXXFLAGS)
Pascal编译:.p 变为.o $(PC) -c $(PFLAGS)
Fortran编译:.r变为-o $(FC) -c $(FFLAGS)
例:
OBJS = kang.o yul.o
CC = gcc
CFLAGS = -Wall -O -g
sung : $(OBJS)
$(CC) $^ -o $@
kang.o: kang.c kang.h
$(CC) $(CFLAGS) -c $< -o $@
yul.o : yul.c yul.h
$(CC) $(CFLAGS) -c $< -o $@
使用隐式规则
OBJS = kang.o yul.o
CC = gcc
CFLAGS = -Wall -O -g
sung: $(OBJS)
$(CC) $^ -o $@
模式规则:
隐式规则仅仅能够用make默认的变量来进行操作,而模式规则还能引入用户自定义的变量,为多个文件建立相同的规则,从而简化Makefile的编写。模式规则的格式类似于普通规则,这个规则中的相关文件前必须用"%"表明,使用模式规则的例子:
OBJS = kang.o yul.o
CC = gcc
CFLAGS = -Wall -O -g
sung:$(OBJS)
$(cc) $^ -o $@
%.o:%.c
$(cc) $(CFLAGS) -c $< -o $@