• 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修饰的话,就总是都可以被执行。

     

  • 相关阅读:
    中关村科幻产业创新中心 “科技赋能文化旅游,洞见哈萨克斯坦”数字旅游展盛大开幕
    从技术创新到应用实践,百度智能云发起大模型平台应用开发挑战赛!
    python与C++的效率区别、模型部署/ONNXRuntime/tensorrt
    AJAX——ajax原理
    招投标系统软件源码,招投标全流程在线化管理
    论文笔记:A survey of deep nonnegative matrix factorization
    ASO优化之手游该如何获得巨量新增(中)
    学习Java的第二十三天。。。(集合)
    Servlet中乱码解决
    Power BI 傻瓜入门 1. 数据分析术语:Power BI风格
  • 原文地址:https://blog.csdn.net/zhengyawen666/article/details/126084622