Gnu make手册学习【3】——编写makefile文件
来源:互联网 发布:苹果手机网络权限设置 编辑:程序博客网 时间:2024/05/16 17:17
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手册学习【3】——编写makefile文件
- Gnu make手册学习【4】——编写规则
- Makefile 学习1(参考GNU make中文手册)
- GNU Make 及Makefile的编写
- GNU Make 及Makefile的编写
- GNU Make 中文手册v3.8 学习 ( 3/3 )
- GNU Make 中文手册v3.8 学习( 1/3 )
- GNU Make 中文手册v3.8 学习 (2/3)
- GNU make中文手册 学习总结摘要
- make 的 makefile 文件编写
- GNU make中文手册-第三章:Makefile 总述
- GNU make中文手册
- GNU make中文手册
- GNU make中文手册
- GNU make中文手册
- GNU make中文手册
- GNU make中文手册
- GNU make中文手册
- LDAP的特定错误
- Java SE 6 新特性: Instrumentation 新功能
- 3D图形
- fedora8下mysql-standard-5.0.27-linux-i686安装
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来
- Gnu make手册学习【3】——编写makefile文件
- struts forward的path中带参数的配置方法
- Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决!
- asp.net 字符替换 <: < >: > &: &
- 电脑的开机密码忘记了怎么打开
- Linux下IP冲突检测方法
- wince同步机制示例 飞凌视频
- SSL与CA
- 泛型一种用法