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不能识别。

 

转载于:https://www.cnblogs.com/hustdc/p/7458098.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值