Linux学习(十三):Makefile

来源:互联网 发布:mac os的硬件配置要求 编辑:程序博客网 时间:2024/05/17 21:47

Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作 。

1、makefile基本结构

在一个Makefile中通常包含以下内容:

1、需要由make工具创建的目标体(target),通常是目标文件或可执行文件;

· 2、要创建的目标体所依赖的文件(dependency_file);

·3、创建每个目标体时需要运行的命令(command),这一行必须以制表符(tab键)开头。
格式如下:

target: dependency_files

<  TAB  >command /* 该行必须以tab键开头*/

我们来看一个简单的例子,源文件为main.c ,1.c, 2.c 头文件为1.h, 2.h,功能很简单,1.c实现加法运算,2.c实现减法

运算。



我们按照上面提到的编写规则,把Makefile文件写出来即可,还是很简单的。使用时,在当前文件下使用make
命令即可。


2、Makefile变量

变量的种类:
1、用户自定义变量
2、预定义变量
3、自动变量
4、环境变量
用户自定义的变量也就是我们用户自己定义的变量,无需多讲 

2.1 预定义变量

2.2 自动变量

2.3 环境变量

make在启动时会自动读取系统当前已经定义了的环境变量,并且会创建与之具有相同名称和数值的变量。如
果用户在makefile中定义了相同名称的变量,那么用户自定义变量将会覆盖同名的环境变量 。
在此,我们将之前的Makefile做一下简化。

另外,我们看到,main.o 1.o 2.o 的生成规则其实是一样的,我们可以采样模块化规则来简化


3、Makefile命令行选项



4 、Makef中基本函数


5、伪指令

伪目标并不是一个"目标(target)", 不像真正的目标那样会生成一个目标文件.典型的伪目标是 Makefile 中用来清理编

译过程中中间文件的 clean 伪目标。我们一般会用.PHONY:XXXX来表明一个伪指令。不加这句话有时候也能通过,

但是,如果当前文件夹有一个名为clean的文件,make clean就无法正常使用了,所以会添加这句指令。


原创粉丝点击