• Linux项目自动化构建工具-make/Makefile


    目录

    前言/背景

    make && makefile 

    make -- 生成可执行程序 

    make clean -- 清理可执行程序 

    关于PHONY 

    对于make -- 发现

    多文件的 makefile

    总结


    C语言总结在这常见八大排序在这

    作者和朋友建立的社区:非科班转码社区-CSDN社区云💖💛💙

    期待hxd的支持哈🎉 🎉 🎉

    最后是打鸡血环节:你只管努力,剩下的交给天意🚀 🚀 🚀  

    前言/背景

    会不会写 makefifile ,从一个侧面说明了一个人是否具备完成大型工程的能力
    一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中, makefifile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
    makefifile 带来的好处就是 ——“ 自动化编译 ,一旦写好,只需要一个 make 命令,整个工程完全自动编译,极大的提高了软件开发的效率。
    make 是一个命令工具,是一个解释 makefifile 中指令的命令工具,一般来说,大多数的 IDE 都有这个命令,比如:Delphi make Visual C++ nmake Linux GNU make 。可见, makefifile 都成为了一种在工程方面的编译方法。
    make是一条命令,makefifile 是一个文件,两个搭配使用,完成项目自动化构建。  

    make && makefile 

     makefile:是在当前路径下的一个普通文件(包含)

    1. 依赖关系

    2. 依赖方法

    目的:形成可执行程序

    make -- 生成可执行程序 

    make clean -- 清理可执行程序 

    PS:对于make为什么会直接生成可执行程序而不是clean,是因为我们把生成可执行程序放在前面的!

    关于PHONY 

    PHONY:虚假的,伪造的

    PHONY是makefile语法格式中的一个关键字        

    .PHONY 后面跟着的都是伪目标
    伪目标也是目标,后面也有依赖关系和依赖方法
    这里clean后面依赖关系为空

    clean被.PHONY修饰说明总是被执行的

    意思就是无论目标文件是否新旧,照样执行依赖关系!(不懂看下面会解释)

    对于make -- 发现

    我们发现不会总是被执行,与上面是对立的!

    那makefile是如何识别我们的文件(exe/bin)是新还是旧的呢?

    我们知道                文件=内容+属性

    stat(状态)

    这里有三个时间,作者的是汉化过的,原本是英文哈

    对应是 Access Modify Change 

    当我们改变内容的时候,改变的是Modify记录的时间

    当我们改变属性的时候,改变的是Change记录的时间

    (还有就是改变内容的时候,大概率会改变文件属性(如Size))

    根据对比源文件和可执行程序的最近修改时间,评估要不要重新生成!

    多文件的 makefile

    结果

    PS:关于为什么makefile里面没有看到test.h,是因为test.h早在预处理的时候就已经包含到test.c里面了哈!

    总结

    make是个命令
    makefile是个文件
    makefile里面是依赖关系+依赖方法

    最后的最后,创作不易,希望读者三连支持💖

    赠人玫瑰,手有余香💖

  • 相关阅读:
    计网--传输层
    使用JavaMailSender进行邮件发送
    1339. 分裂二叉树的最大乘积-深度优先遍历
    【4】Docker容器相关命令
    LeetCode 75. 颜色分类
    竞赛 基于设深度学习的人脸性别年龄识别系统
    安全信得过!天翼云数据安全管理平台通过评测
    python工程打包成可执行文件
    2022-08-04 clickhouse的select子句
    LeetCode 61. 旋转链表
  • 原文地址:https://blog.csdn.net/weixin_62700590/article/details/126194320