• 学会make/makefile基本用法


    目录

    make/makefile是什么?

    自动化构建

    举例

    分析 makefile 中的各部分

    依赖关系

    依赖方法

    清理项目

    伪目标

    makefile如何识别生成的目标文件的新旧? 

    验证访问的时间

    验证修改属性的时间

    验证内容更改的时间


    make/makefile是什么?

    make/makefile是Linux项目自动化构建工具

    make是一条命令

    makefile是一个文件

    make调用makefile,两个搭配使用,完成项目自动化构建

    自动化构建

    在makefile中写好我们要编译的东西,使用 make 命令,会自动执行 makefile 中的内容,减少重复写命令的实践,提高效率。

    举例

    接下来使用 make 命令:

    分析 makefile 中的各部分

    依赖关系

    :前面是想要生成的文件,后面是此文件要生成所依赖的源文件

    相当于写在makefile中的——(目标文件:源文件 )—— 就是依赖关系

    依赖方法

    依赖方法的上方是依赖关系,只有依赖关系是达不到我们得到目标文件的目的,还需要依赖方法,相当于——源文件生成目标文件的步骤——就是依赖方法 

    而 make 命令,可以通过依赖关系来自动调用依赖方法,make 和 makefile 工具可以提前写好命令,防止命令的错误书写,也更加方便

    清理项目

    上述我们是根据依赖关系和方法生成了项目,在 makefile 中也是支持清理项目:

    伪目标

    一般会在用 .PHONY 来修饰 clean ,而被  .PHONY 修饰的目标都称为伪目标:

    伪目标表示:目标总是被执行的

    这句怎么理解,有总是被执行,就有总是不被执行举例如下:

    上图中目标 test 未被 .PHONY 修饰为伪目标,那么他不会一直执行:

    下面我们将 test 修改为伪目标:

    再次频繁调用 make:

    makefile如何识别生成的目标文件的新旧? 

    上述提到了,不是伪目标的话,生成一次目标后,再次调用 make ,是不能再次调用依赖方法,重新生成目标的,因为我们要再次生成的目标根和已经生成的目标是完全相同的,那么makefile是如何识别新旧目标来防止重复生成的呢?

    答案:makefile 会根据对比旧目标和源文件的--内容更改的时间,来确定新目标要不要生成,源文件的时间晚,则表明源文件被更改过,重新编译生成目标,若目标的时间晚,则不用重新生成。

    文件有三个时间:

    验证访问的时间

     说明了 makefile 是不是根据访问时间来判断是否重新生成目标的

    验证修改属性的时间

    说明了 makefile 是不是根据属性修改时间来判断是否重新生成目标的

    验证内容更改的时间

    说明了 makefile 是否重新调用依赖方法生成目标,是对比目标和源文件谁记录的内容更改时间更晚,源文件更晚,则会重新生成目标!

     

  • 相关阅读:
    Centos安装Jenkins官方方式安装教程
    LCR 068.搜索插入位置
    在 CentOS 7 上安装中文字体
    设计模式-命令模式(Command)
    【TensorFlow2 之015】 在 TF 2.0 中实现 AlexNet
    小程序app手机端Python爬虫实战03-uiautomater2项目初始化
    RL_sysu_homework
    HT5010 音频转换器工作原理
    基于 BIO 形式下的文件上传
    【MySQL】了解并操作MySQL的缓存配置与信息
  • 原文地址:https://blog.csdn.net/weixin_53316121/article/details/126183362