《跟我一起写Makefile》读书笔记(2)
来源:互联网 发布:全国各大高校校花知乎 编辑:程序博客网 时间:2024/06/10 20:00
四、Makefile综述
1、makefile里有什么?
Makefile 里主要包含五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。
(1)在 Makefile 中我们要定义一系列的变量,变量一般都是字符串;这个有点像C语言中的宏,当 Makefile 被执行时,其中的变量都会被扩展到相应的引用位置上。
(2)文件指示,包括三个部分
- 一个是在一个 Makefile 中引用另一个 Makefile,就像 C 语言中的include 一样;
- 另一个是指根据某些情况指定 Makefile 中的有效部分,就像 C 语言中的预编译#if 一样;
- 还有就是定义一个多行的命令。
- Makefile 中只有行注释,和 UNIX 的 Shell 脚本一样,其注释是用“#”字符。
- 如果要使用“#”字符,可以用反斜框进行转义,如:“\#”。
2、makefile的文件名
(1)默认的情况下,make 命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件;
(2)大多数的 make 都支持“makefile”和“Makefile”这两种默认文件名;
(3)可以使用别的文件名来书写 Makefile,比如 : “ Make.Linux” ,“Make.Solaris”,“Make.AIX”等。
- 如果要指定特定的 Makefile,你可以使用 make 的“-f”和“--file”参数,如:make -f Make.Linux 或 make --file Make.AIX。
3、引用其他Makefile文件
(1)例子如:(这里可以有空字符)include foo.make *.mk $(bar)
(2)细节注意
- 被包含的文件会原模原样的放在当前文件的包含位置;
- 在 include前面可以有一些空字符,但是绝不能是[Tab]键开始;
- include和文件之间,可以用一个或多个空格隔开。
4、环境变量MAKEFILES
(1)如果你的当前环境中定义了环境变量 MAKEFILES,那么,make 会把这个变量中的值做一个类似于 include 的动作。
(2)它和 include不同的是,从这个环境变中引入的 Makefile 的“目标”不会起作用,如果环境变量中定义的文件发现错误,make 也会不理。
(3)这个变量中的值是其它的 Makefile,用空格分隔。
(4)建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用 make 时, 所有的 Makefile 都会受到它的影响。
5、Makefile的工作方式
(1)读入所有的 Makefile;
(2)读入被 include 的其它 Makefile;
(3)初始化文件中的变量;
(4)推导隐晦规则,并分析所有规则;
(5)为所有的目标文件创建依赖关系链;
(6)根据依赖关系,决定哪些目标要重新生成;
(7)执行生成命令。
- 《跟我一起写Makefile》读书笔记(2)
- 跟我一起写Makefile 读书笔记
- 跟我一起写Makefile(2)
- 《跟我一起写Makefile》读书笔记(1)
- 《跟我一起写Makefile》读书笔记(3)
- 跟我一起写 Makefile(2)
- 跟我一起写 Makefile(陈皓著)
- 跟我一起写 Makefile(转载)
- 跟我一起写 Makefile(转载)
- 跟我一起写 Makefile(转载)
- 跟我一起写 Makefile(一)
- 跟我一起写 Makefile(二)
- 跟我一起写 Makefile(三)
- 跟我一起写 Makefile(四)
- 跟我一起写 Makefile(五)
- 跟我一起写 Makefile(六)
- 跟我一起写 Makefile(七)
- 跟我一起写 Makefile(八)
- iOS如何设置一个只会在第一次打开app出现的视图(如登录页面)
- Intellij IDEA创建maven 一直loading archetype list
- oracle 11G R2控制文件的管理
- javaIO框架
- JAVA语言之关键字Volatile
- 《跟我一起写Makefile》读书笔记(2)
- Mycat1.6之加载Schema的DataHosts完整属性源码解读
- 提高oracle查询速度
- EOJ 3263丽娃河的狼人传说(贪心)
- spring使用jpa进行update操作
- java实现定时任务的三种方法
- v-bind和v-on
- 多线程(同步锁)
- 决策树