make/makefile二

Makefile 总述

  1. > Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。
  2. 在Makefile中的命令,必须要以[Tab]键开始。

  3. Makefile的文件名:“GNUmakefile”、“makefile”、“Makefile”

  4. 引用其它的Makefile: includefilename
    可以是当前操作系统Shell的文件模式(可以保含路径和通配符)
    在include前面可以有一些空字符,但是绝不能是[Tab]键开始。 include和可以用一个或多个空格隔开。
    include foo.make *.mk $(bar)相当于
    include foo.make a.mk b.mk c.mk e.mk f.mk

  5. Makefile书写规则

基础概念1

规则包含两个部分,一个是依赖关系,一个是生成目标的方法。
在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标

  foo.o: foo.c defs.h       # foo模块
           cc -c -g foo.c
  分析:
  foo.o是我们的目标,foo.c和defs.h是目标所依赖的源文件
  只有一个命令“cc -c -g foo.c”(以Tab键开头)
  说明:
    1). 文件的依赖关系,foo.o依赖于foo.c和defs.h的文件,如果foo.c和defs.h的文件日期要比foo.o文件日期要新,或是foo.o不存在,那么依赖关系发生。
    2). 如果生成(或更新)foo.o文件。也就是那个cc命令,其说明了,如何生成foo.o这个文件。(当然foo.c文件include了defs.h文件)
基础概念2

在规则中使用通配符

“~” 比如“~/test”,这就表示当前用户的$HOME目录下的test目录

” 比如 通配符代替了你一系列的文件,如“.c”表示所以后缀为c的文件。

Make的工作方式

  1. GNU的make工作时的执行步骤入下:1-5步为第一个阶段,6-7为第二个阶段

    1. 读入所有的Makefile。

    2. 读入被include的其它Makefile。

    3. 初始化文件中的变量。

    4. 推导隐晦规则,并分析所有规则。

    5. 为所有的目标文件创建依赖关系链。

    6. 根据依赖关系,决定哪些目标要重新生成。

    7. 执行生成命令。

      • 第一个阶段中,如果定义的变量被使用了,那么,make会把其展开在使用的位置。
      • 仅当这条依赖被决定要使用了,变量才会在其内部展开。


 1. 文件搜寻  把一个路径告诉make,让make在自动去找。

 2. 伪目标 -“伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成它的依赖关系和决定它是否要执行


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值