MakeFile走读与语法基础

3 篇文章 0 订阅
2 篇文章 0 订阅

标题编译原理和语法详解

什么是Makefile

  1. makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要重新编译,如何进行链接操作。
  2. makefile就是“自动化编译",告诉make命令如何编译和链接。make命令的配置脚本

Makefile里面有什么

makefile包含以下五个:

  1. 显示规则:如何生成一个或多个目标文件
  2. 隐晦规则:make有自动推导功能,隐晦规则可以比较简略的书写makefile
  3. 变量定义:定义一些列字符串的变量,类似于C中的宏,makefile执行时,其中的变量都会被扩展到相应的引用位置上。
  4. 文件指示:在一个makefile中引用另一个makefile(类似C中的include)、根据某些情况制定makefile中的有效部分(C语言中的预编译)、定义一个多行的命令
  5. 注释:只有行注释使用‘#’,如果要使用‘#’则需要使用反斜杠 ‘#’表示。

Makefile的规则

  1. target:目标文件。可以是Object File,也可以是执行文件,还可以是标签(Label)

  2. prerequisties: 依赖文件即要生成那个target所需要的文件或者其它target

  3. command:make需要执行的命令

    target … : prerequisites …
    command
    或者
    target … : prerequisites … ;command

Makefile示例

在这里插入图片描述

Makefile是如何工作的

默认方式下,输入make命令后:

  1. make会在当前目录下找名字叫”Makefile“或”makefile“的文件。
  2. 如果找到,它会找文件中第一个目标文件(target),并把这个target作为最终的目标文件,如前面示例中的”main“。
  3. 如果main文件不存在,或main所依赖的.o文件的修改时间要比main文件要新,那么它会执行后面所定义的命令来生成main文件。
  4. 如果main所依赖的.o文件也存在,那么make会在当前文件中找目标为.o文件的依赖性,若找到则根据规则生成.o文件。
  5. make再用.o文件声明make的终极任务,也就是执行文件”main“。

Makefile中使用变量

在这里插入图片描述

引用其它的Makefile

在这里插入图片描述

环境变量MAKEFILES

如果当前环境中定义了环境变量MAKEFILES,那么,make会把这个变量中的值做一个类似于include的动作。这个变量中的值是其它Makefile,用空格分隔。只是,它和include不同的是,从这个环境变量中引入的Makefile的”目标“不会起作用,如果环境变量中定义的文件发现错误,make也不会理会。但是建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用make时,所有的Makefile都会受到它的影响。也许有时候Makefile出现了奇怪的事,那么可以查看当前环境中有没有定义这个变量。

Makefile预定义变量

在这里插入图片描述

Makefile自动变量

在这里插入图片描述

Makefile函数

在这里插入图片描述

make的工作流程

GUN的make工作时的执行步骤如下
1. 读入所有的Makefile。
2. 读入被include的其它Makefile。
3. 初始化文件中的变量。
4. 推导隐晦规则,并分析所有规则。
5. 为所有的目标文件创建依赖关系链。
6. 根据依赖关系,决定哪些目标要重新生成。
7. 执行并生成命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值