公司项目中Makefile的使用
Makefile基本格式
target ... : prerequisites ... |
target - 目标文件
prerequisites - 生成target所需要的文件
command - 需要执行的命令(shell命令),命令必须以【tab】开头
Makefile的规则:prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。
注意:JetBrains家的idea Tab键默认按出来是四个空格构成而不是制表符。
设置方法:Preferences-》Code Style-〉Other File Types 中选择Use tab character 点击Ok。
伪目标&.PHONY
如果taget文件不存在,那么他会执行后面所定义的命令。这里我们只讨论伪目标,伪目标不会像真正的目标(target)一样生成一个目标文件。通常情况下.PHONY会与伪目标一起配合使用,目的是为了避免和同名文件冲突、改善性能。
如果编写一个规则,并不产生目标文件,则其命令在每次make 该目标时都执行。例如: |
go fmt ./…
go官方文档说明:./…代表在当前文件夹下和旗下所有子文件,除vendor目录下的文件。
那么这个命令的意思就是格式化当前文件夹下和旗下所有子文件(除vendor目录下的文件)
MakeFile如何忽略错误
在可能出错的命令前面加上-
如何一口气生成多个目标
Makefile中的第一个目标会被作为其默认目标。我们声明了一个“all”的伪目标,其依赖于其它n个目标。由于伪目标的特性是,总是被执行的,所以其依赖的那n个目标就总是不如“all”这个目标新。
Makefile文件事例
.PHONY: all format clean |