开始编写Makefile(三)Makefile的默认模式规则

1.make中建立的其他语言的规则

SCCS  , RCS , ar, lex 和yacc 命令

2.为了建立一个目标,make会遍历一连串的依赖关系;这个是为 决定何处开始创建;

如果没有找到目标文件;make按照有限顺序查找源文件

3.了了生成目标文件,它首先查找带有(*.c,*.f或*.s)后缀的文件,如果一个都没有找到,它会继续寻找带*.c的后缀文件并继续搜搜;

直到找到一个源文件。如果没有找到一个源文件;make就会报告一个异常。

一、默认模式规则GUN make

%是通用匹配符即通配符

1 %.o:%c:
2     $(CC) $(CFLAGS) -c $<

二、默认的后缀规则

SUFFIXES:.o.c.s
.c.o
    $(CC) $(CFLAGS) -c $<

  

示例:Makefile 案例文件

 1 ###############定义变量##################
 2 CC:=gcc
 3 CFLAGS:=-Iinclude
 4 CFLAGS+= -c
 5 TARGET:=bin/mymath_test
 6 DEPEND:=obj/mymath.o
 7 DEPEND+=obj/mymath_test.o
 8 
 9 $(TARGET):$(DEPEND)#开始执行
10     $(CC) -o $@ $^
11 
12 #############采用模式规则编译###########
13 obj/%.o:src/%.c
14     $(CC) -o $@ $(CFLAGS) $^
15 
16 
17 #############常规规则编译#################
18 #obj/mymath.o:src/mymath.c
19 #    $(CC) -o $@ $(CFLAGS) $^
20 #obj/mymath_test.o:src/mymath_test.c
21 #    $(CC) -o $@ $(CFLAGS) $^
22 #################################################################
23 
24 .PHONY:clean#指定clean是虚目标
25 ###################make clean 清除生成的文件######################
26 clean:
27     rm -fr $(TARGET) $(DEPEND)
原文地址:https://www.cnblogs.com/wanglijun/p/8643602.html