• Linux中自动构建项目——make和makefile


    一 make和makefile是什么

    make是一个命令,makefile是用来完成自动化构建项目的对应的文件。我们要自动化构建项目(编译源代码就自动形成可执行程序),就必须编写makefile文件。

    makefile文件的两个基本要素:依赖关系和依赖方法。

    依赖关系:谁要依赖谁,依赖方法:怎么依赖。

    介绍makefile之前,我先引出一点关于makefile的相关操作的背景知识:makefile是可以用来自动化构建项目的,那她的依据是什么?

    主要是根据文件的最新修改时间来判断。

    一个文件主要包含三个时间:

    1 access:文件最近被访问的时间。

    2 modify:文件的内容被改变的最近的一次时间

    3 change:文件的属性最近一次被改变的时间:比如文件权限的修改等。

     

    需要注意的是,access并不会频繁被修改,假设你cat一个文件非常的频繁,那么磁盘会被频繁访问,显然不合理。也就是说,只有累积到一定的时间后,access才会被修改。

    那么就会出现这样的问题:有时候原文件的modify时间或者change时间比access时间要早。

    这显然不合理,那么此时就是需要自动化构建项目的。也就是说,如果一个文件的所有时间都是最晚的,那么这个文件就是最新的。

    接下来演示如何编写makefile文件

     

     

     

    第一行是依赖关系:形成mytest要依赖test.c文件

    第二行以tab开头,是依赖方法,比如自动编译生成可执行程序。

    之后我们用make命令来自动化构建项目,那么就会自动帮我们编译了。

    .PHONY后面也是相应的依赖关系和依赖方法。

    但是.PHONY修饰的是伪目标。(这里的意思是说,这两个依赖关系和依赖方法,.PHONY后面的是伪目标,不是说被.PHONY修饰的都是伪目标的意思)因为make命令自动从上往下扫描,默认执行的是第一个依赖关系和依赖方法。

    因此如果我们想进行clean有关的操作的话,需要继续指定。

     

    有时候文件以及是最新的话,那么执行make也不会进行相关的操作了。

     

    关于.PHONY 她的意思是总是被执行的。与上面的make相比,只有满足一定的条件才会进行make。但是如果把.

    PHONY修饰的话,就总是都可以被执行。

     

  • 相关阅读:
    hive数据导出
    Javaweb与Mybatis实现简单的用户注册登录
    ajax调用webservice
    网络工程师练习题
    CentOs7 彻底卸载清除docker
    OSPF—DR与BDR知识点及选举
    3.pytorch学习:conv2d——2d卷积
    javascript二维数组(10)ajax的使用
    慢性子的网易,走不快的B端?
    【Python爬虫】selenium4新版本使用指南
  • 原文地址:https://blog.csdn.net/zhengyawen666/article/details/126084622