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及简单分析

    makefile的好处:一次编写,终身受益 makefile的命名规则: makefile Makefile ma...

  • Makefile 工程管理

    Ⅰ Makefile的用途 Ⅱ Makefile的构成 Ⅲ Makefile构成-----规则 Ⅳ Makefil...

  • win_c/c++ mess01

    1. win makefile 1.1 win makefile,eg: 1.2 makefile explai...

  • [C] Makefile

    Makefile Blog [Makefile的简便写法] [Makefile]菜鸟教程 [gcc编译声明问题] ...

  • 迅为IMX6ULL开发板Ubuntu下C编程入门(二)

    本文是介绍3.3 初识 Makefile+3.4Makefile语法 3.3初识Makefile 3.3.1什么是...

  • Make

    make 目标 顶层 Makefile 作为入口, 来调用其他 makefile, 顶层 makefile 一般有...

  • Makefile学习笔记

    Makefile学习笔记 学习Makefile的资料 《跟我一起写makefile》 《GUN make manu...

  • Linux Kernel Makefiles特殊符号

    Makefile基本规则: Makefile文件中可使用特殊的符号简化Makefile文件的书写。 1、$@:表示...

  • makefile入门一

    Linux下Makefile详解 下面就来看如何写Makefile文件:Makefile文件编写规范: 下来看事例...

  • Makefile

    Makefile for boot Makefile Makefile对格式有要求:每一行文本除非顶头开始,如果需...

网友评论

      本文标题:Makefile

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