make的特殊之处
Posted phoenix tree
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了make的特殊之处相关的知识,希望对你有一定的参考价值。
1 规则的先后顺序问题
规则的先后顺序只会影响默认的目标,没有其它的影响。
2 make对具有相同目标的规则的处理方式
2.1 如果是单冒号
只能有一个规则是有命令的,然后对它们进行合并,即依赖合并。
2.2 如果是双冒号
分别单独处理,顺序按照makefile中的顺序。这种情况下,只有各个规则的命令是独立才是有意义的。
3 make对模式规则和非模式规则匹配的先后顺序
4 通配符扩展的时机
4.1 不会扩展的情况
第一,定义变量的时候
第二,作为函数的参数的时候
4.2 会自动扩展的情况
在命令中。
4.3 通配符扩展函数wildcard
$(wildcard *.c)
4.4 问题
在目标和依赖中的通配符呢,会自动扩展吗?
5 没有依赖和没有命令的目标作为别人的依赖使用
当没有依赖和没有命令的目标作为别人的依赖使用时,该“别人”目标总是会被重新构建。
6 静态模式规则
静态模式规则是相对于模式规则而言的。
静态模式规则有两个冒号,它指定了明确的目标,然后通过目标模式去匹配依赖模式,从而找到相应的依赖。它是一种自动确定依赖的方法。
而模式规则不光自动确定依赖,还自动确定目标。
7 make的条件判断的特殊之处
其它语言的条件判断是控制执行流的,但是makefile的条件判断并不是控制执行流的,它是控制makefile对make的可见性的,如果条件不满足,那么make就看不到makefile被条件包裹的部分。
8 无论rules的recipe怎么写,recipe的每行前面都必须是tab键,而不能是空格,否则make不能识别。
以上是关于make的特殊之处的主要内容,如果未能解决你的问题,请参考以下文章