Makefile
介绍
- Makefile 里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。
#--注释--
target ...: prerequisites ...
command
...
...
target:可以是一个或多个目标文件、标签、执行文件。
prerequisites:生成该target所依赖的文件和/或target。
- 如果有一个以上的文件比
target文件要新或者target不存在的话,command命令就会被执行。
command:该target要执行的命令(任意的shell命令)。
常用语法
- 特殊变量
VPATH,如果定义了这个变量,那么,make 就会在当前目录找不到的情况下,到所指定的目录中去找寻文件。
- e.g.
VPATH = src:../headers,用冒号分隔。
bigoutput littleoutput : text.g
generate text.g -$(subst output,,$@) > $@
$表示执行一个 Makefile 的函数,函数名为subst
$@ 表示目标的集合,就像一个数组
makefile的工作流程
- 当只输入make命令时,会经历如下基本过程
- 会在当前目录下找名字叫“Makefile”或“makefile”的文件。
- 如果找到,读入包含文件,初始化文件中的变量,找文件中的第一个目标文件(target)。
- 如果第一个目标文件不存在或者比依赖项旧,则会执行后面的命令重新生成目标文件。
- 如果需要的依赖文件不存在,会寻找生成该文件的规则。