Makefile文件

  • 时间:
  • 来源:互联网
  • 文章标签:

文章目录

  • 1、make 与 Makefile
  • 2、make 解决的问题:
  • 3、Makefile 语法
  • 4、make 命令格式
  • 5、Makefile变量
      • 5.1、变量的分类
      • 5.2、 自定义变量语法
      • 5.3、系统环境变量
      • 5.4、预定义变量

记录自己以往的学习笔记

1、make 与 Makefile

make: 一条解析Makefile文件的命令(可执行程序),存放于 /usr/bin/
Makefile:描述程序编译规则的文件

windows下一般由集成开发环境自动生成,linux下需要开发者根据自己的程序按照语法编写编译规则。
将编译程序时的输入命令做成文件,只需要运行make命令编译文件即可运行文件中的命令。
一般有多个.c文件时才使用Makefile。

GNU make:代码维护工具

2、make 解决的问题:

一、大量代码维护

把代码维护命令及编译命令写在makefile文件中,然后再用make工具解析此文件自动
执行相应命令,可实现代码的合理编译

二、减少重复编译时间

在改动其中一个文件的时候,能判断哪些文件被修改过,可以只对该文件进行重新编
译,然后重新链接所有的目标文件,节省编译时间

3、Makefile 语法

Makefile一般情况下就是为了先将 .c 文件生成 .o 文件,再将 .o 文件生成可执行文件

语法规则
可以用 # 进行注释

目标:依赖文件列表
(tap空格)命令列表
语法规则

目标:要产生的文件名称,目标可以是可执行文件或其它obj文件,也可是一个动作的名称。
依赖文件:用来输入从而产生目标的文件,一个目标通常有多个依赖文件,也可以没有。
命令:make 命令要执行的动作,一个规则可以含几个命令,也可以没有,有多个命令时,每个命令占一行。

假想目标:makefile 中出现的文件称为假想目标,它不是一个真正的文件名,而是一个目标集合或者动作。可以没有依赖或者命令,一般需要显示的使用make + 名字 显示调用

all:exec1 exec2
clean:
<Tab空格>rm *.o exec

运行时使用make clean 就会执行clean后面的命令

4、make 命令格式

make [ ‐f file ] [ targets ]

一般使用的时候直接make就可以

[ -f file ](可省略):
make 命令默认在工作目录中查找名为GNUmakefile、makefile、Makefile的文件作为
makefile输入文件,-f 可以指定其他名字的文件作为输入文件。

[ targets ]
若使用make命令时无指定目标,则make工具默认会实现makefile文件内的第一个目
标,然后退出,若指定了make工具要实现的目标,目标可以是一个或多个(用空
格隔开)。
Makefile示例1

5、Makefile变量

makefile变量类似于C语言中的宏,当makefile被make工具解析时,其中的变量会被展开。
变量的作用
保存文件名列表、文件目录列表、编译器名、编译参数、编译的输出

5.1、变量的分类

自定义变量:makefile文件中定义的变量。make工具传给makefile的变量。
系统环境变量:make工具解析makefile前,读取系统环境变量并设置为makefile的变量。
预定义变量(自动变量)

5.2、 自定义变量语法

定义变量:变量名=变量值
引用变量:$(变量名) 或 ${变量名}
注意

1、变量名可用数字开头
2、变量是大小写敏感的
3、变量一般都在makefile的头部定义
4、变量几乎可在makefile的任何地方使用

示例2

5.3、系统环境变量

make工具会拷贝系统的环境变量并将其设置为makefile的变量,在makefile中可直接读取
或修改拷贝后的变量。
#export test=10
#make clean
#echo $test
示例3

5.4、预定义变量

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

示例
示例4

精简版

本文链接http://www.taodudu.cc/news/show-1782165.html