Makefile

作者: Eugene_iOS | 来源:发表于2023-03-30 19:50 被阅读0次

    Makefile概述

    Linux环境下,当用户编译文件过多,可以通过Makefile实现模块化编译文件。
    Makefile它是一个脚本文件,定义了一套规则,决定了哪些文件要先编译,哪些文件后编译,哪些文件重新编译;我们可以根据规则来执行相应的脚本文件,实现自动化编译。
    一个Linux项目工程通常只要一个make命令就可以完成编译、链接,甚至更复杂的功能。可以说,任何一个Linux源程序都带有一个Makefile文件。

    Makefile优点

    1、管理代码的编译,决定该编译什么文件,编译顺序,以及是否需要重新编译。
    2、节省编译时间。如果文件有更改,只需重新编译此文件即可,无需重新编译整个工程。
    3、一劳永逸。Makefile通常只需编写一次,后期就不用过多更改。

    Makefile结构说明

    Makefile里主要包含了五个东西:显式规则隐晦规则变量定义文件指示注释

    1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。 刚才写的疑似shell脚本的Makefile全部都是显示规则。

    2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。

    3、变量的定义。在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点像C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。

    4、文件指示。其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样。

    5、注释。Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符,这个就像C/C++中的“//”一样。如果你要在你的Makefile中使用“#”字符。

    Makefile的规则

    Makefile规则的基本格式
    格式一:单目标,多个依赖

    <target> : <depends>
    [tab] <commands>

    格式二:多个目标,多个依赖,多个命令

    <target1, target2> : <depends>
    [tab] <commands>
    [tab] <commands>

    格式三:规则之间的嵌套

    // 规则一,该规则依赖规则二、三
    <target1> : <target2,target3>
    [tab] <commands>
    // 规则二
    <target2> : <depends>
    [tab] <commands>
    // 规则三
    <target3> : <depends>
    [tab] <commands>

    规则的基本格式解释

    1、目标(target):通常是要生成的文件名称,目标可以是可执行文件或其他obj文件,也可以是一个动作的名称。
    2、依赖文件(depends):生成目标 需要的文件,一个目标通常有几个依赖文件(也可以没有)。
    3、命令(commands):make执行的动作,一个规则可以含几个命令(也可以没有),有多个命令时,每个命令占一行。

    Makefile变量的分类

    1、自定义变量

    定义变量:
    变量名 = 变量值
    引用变量:
    $(变量名) 或 ${变量名}
    注意:
    1、makefile变量名可以数字开头
    2、变量大小写敏感
    3、变量一般都在makefile的头部定义
    4、变量几乎可在makefile的任何地方使用

    2、系统环境变量

    make工具会拷贝系统的环境变量,并将其设置为makefile的变量,在makefile中可直接读取或修改变量。

    3、预定义变量

    makefile中有很多预定义的变量,这些变量具有特殊的含义,可直接在makefile中使用。

    常用的预定义变量
    $@ :目标名
    $<:依赖文件列表中的第一个文件
    $^:依赖文件列表中除去重复文件的部分
    CC:C 编译器的名称,默认值为cc
    CGLAGS:C编译器的选项

    写在最后

    最实用的Makefile教程
    Makefile 编写教程(由简至难)
    Makefile详解及使用
    一文入门Makefile
    Makefile由浅入深--教程、干货

    相关文章

      网友评论

          本文标题:Makefile

          本文链接:https://www.haomeiwen.com/subject/rcscddtx.html