makefile

makefile中的变量与bash中的变量,语法稍有不同,makefile变量的基本语法为:

变量之间用 = 隔开,且 = 两侧可以有空格
变量左边不可以有键空格
习惯上变量以大写字母
引用变量使用大括号或括号,如{变量}或(变量)
$@表示当前的目标

为了避免与名为clean的文件冲突,最好在clean前面加.PHONY

makefile是这样定义的。

target ...: prerequisites
            command
            command

target代表的是一个 标的,prerequisites代表的是这个标的所依赖的标的,下面那个command就是生成这个标的的命令。

那么那个标的代表的是什么呢?其实它就是代表了一个与他同名的文件,编译之后生成的.o文件,编译链接之后生成的可执行文件或者其他任何类型的文件,例如main这个标的代表的就是main这个可执行文件。
exp:

main:
    gcc -o main main.c

它做的工作是这样的:
    1.查找makefile,默认执行第一个标的(即main)。
    2.检查main这个文件存不存在或者需不需要更新。
    3.如果main文件不存在,则执行下面那个gcc命令来生成这个文件。
    4.如果main文件已经存在,且它的修改时间要早于依赖文件的修改时间(即这个main文件过期了),那么执行下面的gcc命令来生成这个文件。

总结一下:

  • 1.makefile中的每个标的都代表了一个文件。
  • 2.如果只运行make命令,那么默认执行第一个标的。
  • 3.执行一个标的时,会做两件事情:
    • 3.1.查看与这个标的同名的文件是否存在,如果不存在,那么就运行这个标的下面的命令。
    • 3.2.如果与这个标的同名的文件已经存在,那么就检查与这个标的同名的文件是否需要更新(即标的文件的修改时间是否早于依赖文件的修改时间),如果需要更新,那么就运行这个标的下面的命令。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Makefile的规则 在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。 tar...
    小y同学hh阅读 3,808评论 0 0
  • 什么是 Makefile 呢? Makefile 可以简单的认为是一个工程文件的编译规则,描述了整个工程的编译和链...
    JackHCC阅读 13,649评论 0 2
  • 本文部分内容引用: 中文维基百科。 一个简单的Makefile教程。 Makefile简介 在软件开发中,make...
    凌杰_owlman阅读 32,989评论 8 59
  • 什么是Makefile Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件...
    陈HHH阅读 2,944评论 0 0
  • Makefile简介 在软件开发中,make通常被视为一种软件构建工具。该工具主要经由读取一种名为“makefil...
    SunnyZhang的IT世界阅读 3,638评论 0 1