目录
- 问题
如果同一个目标的命令拆分的写到不同地方,会发生什么?
1.下面的程序怎么执行?为什么?
2.makefile中出现同名目标时
- 依赖:
所有的依赖将合并在一起,成为目标的最终依赖
- 命令:
当多处出现同一目标的命令时,make发出警告
所有之前定义的命令被最后定义的命令取代
3.注意事项
当使用include关键字包含其他文件时,需要确保被包含文件的同名目标只有依赖,没有命令;否则,同名目标的命令将被覆盖!
3.什么是隐士规则(built-in rules)
- make提供了一些常用的,例行的规则实现
- 当相应目标的规则未提供时,make尝试使用隐士规则
4.下面的makefile能成功编译吗?为什么?
因为没有指定所以回去指定的标准库里面找
make在linux、windows、uinx下都可以使用,所以cc会根据实际系统去指定
如果改变cc为gcc就会改变隐士规则
5.初探隐士规则
- make提供了生成目标文件的隐士规则
- 隐士规则会使用预定义变量完成编译工作
- 改变预定义变量将部分改变隐士规则的行为
- 当存在自定义规则时,不在使用隐士规则
6.小结
- 当多处出现同一目标的命令时,只有最后定义的命令有效
- make提供了一系列的隐士规则可使用
- 当makefile中未定义相关规则时,尝试使用隐士规则
- 隐士规则中可能使用make中的预定义变量
- 改变预定义变量可部分改变预定义规则的行为