zoukankan      html  css  js  c++  java
  • 开始编写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)
  • 相关阅读:
    nginx 报错 upstream timed out (110: Connection timed out)解决方案
    mysql 数据库缓存调优之解决The total number of locks exceeds the lock table size错误
    阿里云ECS主机内核调优
    安装Python3.6.x
    CentOS 下 LNMP 环境配置
    Walle代码发布系统
    Ansible 运维自动化 ( 配置管理工具 )
    Kafka消息的时间戳
    Linux内存分析
    H3C 查看路由器的硬件信息
  • 原文地址:https://www.cnblogs.com/wanglijun/p/8643602.html
Copyright © 2011-2022 走看看