可以把每个 recipe 当作字符串理解,通过各种方法组成一个字符串,然后交给 shell 执行。
注意:文中的“命令”一词表示以上语法中的 recipe。
本文主要说自动变量,如有疏漏,还请大方指教。(可是现在没有评论,怎么指教呢?)
规则语法:
1 2 3
|
targets : prerequisites recipe …
|
1 2 3
|
targets : prerequisites ; recipe recipe …
|
静态模式规则 (Static Pattern Rules):
1 2 3
|
targets …: target-pattern: prereq-patterns … recipe …
|
可以使用模式规则来定义一个隐含规则。一个模式规则就好像一个一般的规则,只是在规则
中,目标的定义需要有”%”字符。”%”的意思是表示一个或多个任意字符。在依赖目标中同样
可以使用”%”,只是依赖目标中的”%”的取值,取决于其目标。
有一点需要注意的是,”%”的展开发生在变量和函数的展开之后,变量和函数的展开发生在
make载入Makefile时,而模式规则中的”%”则发生在运行时。
我也不知道为什么叫静态模式,也许还有一个动态的吧。
模式规则中,至少要在规则的目标定义中包含”%”,否则,就是一般的规则。目标中的”%”定
义表示对文件名的匹配,”%”表示长度任意的非空字符串。