Gnu make手册学习【3】——编写makefile文件
2011-11-29 11:20
267 查看
3 编写makefile文件
3.1 makefile文件内容
主要包括5个方面:具体规则、隐含规则、定义变量、指令和注释。
3.2 makefile文件名
缺省文件名 GNUmakefile、makefile、Makefile。
也可使用命令参数
make -f makefile1 makefile2 makefileN
make -file=makefile1 makefile2 makefileN
3.3 包含其他makefile文件
include filenames...
注意:include 命令不以tab键开始。
搜索:如果makefile文件不以"/"开头,并且在当前目录下不能找到,则须另外搜寻目标。
首先,搜寻以"-|"或"--include-dir"参数指定的目录;
其次,搜寻"prefix/include"目录,通常为以下目录“/usr/local/include”、“/usr/gnu/include”、“/usr/include”。
include 执行过程中对不存在或不能重新创建的makefile文件,只做警告,make执行完后断定此为致命错误。
-include 指令对不存在或不能重新创建的makefile文件忽略,不产生错误信息。
sinclude 保持与其他make兼容。
3.4 变量MAKEFILES
makefiles文件的变量
3.5 makefile文件重新生成过程
首先读取所有的makefile文件,检查每一个目标,如果目标可更新,则更新之;
在所有检查完成后,如果有任意一个makefile文件发生变化,则make会情况所有记录,重新读入所有makefile。
注意:如上所述,构建make过程很容易就陷入一个死循环中;如果想重建一个文件,要小心哦。
书上说“如果要避免上述情况
的发生,一定注意不要依据双冒号规则使用命令并且不提供依赖重建任何makefile文件”,
我想就是要慎用双冒号规则,若必须用就最好同时使用依赖关系防止进入死循环。
3.6 重载其他makefile文件
待续
3.7 make读取makefile文件的过程
共分两阶段:
第一阶段、make 读取makefile文件,包括makefile本身,内置变量及值,隐含规则及具体规则,构造所有目标的依靠图表
和他们的依赖。
第二阶段、make 使用这些内置的组织决定需要重构的目标,以及使用必要的规则进行工作。
立即扩展与延时扩展:
第一阶段为立即扩展、非立即扩展即延时扩展。
判断规律:
a.变量赋值
附加操作“+=” 右变量在前面使用(:=)定义为简单扩展变量,则为立即扩展,其他为延时扩展。
b.条件语句
立即扩展
c.定义规则
目标和依赖部分为立即扩展,用于构造目标的命令通常为延时扩展。具体规则,格式规则,后缀规则,静态格式
规则以及简单依赖定义均使用该条规律。
3.1 makefile文件内容
主要包括5个方面:具体规则、隐含规则、定义变量、指令和注释。
3.2 makefile文件名
缺省文件名 GNUmakefile、makefile、Makefile。
也可使用命令参数
make -f makefile1 makefile2 makefileN
make -file=makefile1 makefile2 makefileN
3.3 包含其他makefile文件
include filenames...
注意:include 命令不以tab键开始。
搜索:如果makefile文件不以"/"开头,并且在当前目录下不能找到,则须另外搜寻目标。
首先,搜寻以"-|"或"--include-dir"参数指定的目录;
其次,搜寻"prefix/include"目录,通常为以下目录“/usr/local/include”、“/usr/gnu/include”、“/usr/include”。
include 执行过程中对不存在或不能重新创建的makefile文件,只做警告,make执行完后断定此为致命错误。
-include 指令对不存在或不能重新创建的makefile文件忽略,不产生错误信息。
sinclude 保持与其他make兼容。
3.4 变量MAKEFILES
makefiles文件的变量
3.5 makefile文件重新生成过程
首先读取所有的makefile文件,检查每一个目标,如果目标可更新,则更新之;
在所有检查完成后,如果有任意一个makefile文件发生变化,则make会情况所有记录,重新读入所有makefile。
注意:如上所述,构建make过程很容易就陷入一个死循环中;如果想重建一个文件,要小心哦。
书上说“如果要避免上述情况
的发生,一定注意不要依据双冒号规则使用命令并且不提供依赖重建任何makefile文件”,
我想就是要慎用双冒号规则,若必须用就最好同时使用依赖关系防止进入死循环。
3.6 重载其他makefile文件
待续
3.7 make读取makefile文件的过程
共分两阶段:
第一阶段、make 读取makefile文件,包括makefile本身,内置变量及值,隐含规则及具体规则,构造所有目标的依靠图表
和他们的依赖。
第二阶段、make 使用这些内置的组织决定需要重构的目标,以及使用必要的规则进行工作。
立即扩展与延时扩展:
第一阶段为立即扩展、非立即扩展即延时扩展。
判断规律:
a.变量赋值
附加操作“+=” 右变量在前面使用(:=)定义为简单扩展变量,则为立即扩展,其他为延时扩展。
b.条件语句
立即扩展
c.定义规则
目标和依赖部分为立即扩展,用于构造目标的命令通常为延时扩展。具体规则,格式规则,后缀规则,静态格式
规则以及简单依赖定义均使用该条规律。
相关文章推荐
- Gnu make手册学习【4】——编写规则
- 国嵌视屏学习第一天——makefile文件的编写
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新
- 初步认识linux下的GNU的makefile文件编写
- GNU make手册学习(一)
- automake中Makefile.am文件的学习
- 学习编写makefile文件(一)
- Linux Makefile文件编写与使用学习
- linux下make命令和makefile文件学习
- automake连载---关于两个文件configure.in和Makefile.am的编写
- GNU Make 学习系列一:怎样写一个简单的Makefile
- make 的 makefile 文件编写
- Makefile文件编写及make命令使用简介
- Linux学习之Makefile文件的编写
- linux下make命令和makefile文件的编写
- GNU的makefile文件编写说明
- 学习编写makefile文件(二)
- S3C2440学习之第一个Makefile文件编写
- Makefile学习笔记1:Linux平台Makefile文件的编写基础篇(zz)
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新