制作模式规则如何区分来电者?

时间:2016-01-24 14:24:00

标签: makefile monodevelop

我正在阅读dist section of Makefile

它包含我不知道的语法: http://www.gnu.org/software/make/manual/make.html#Pattern-Rules

为什么要使用像"%这样的规则 - 操作:echo ..." ? " all-recursive"," clean-recursive"," install-recursive"," uninstall-recursive"," distcheck-递归" - 它们都匹配规则%-recursive,

我不明白%规则在这些不同情况下的运作方式不同

1 个答案:

答案 0 :(得分:1)

我不确定我理解你的问题:它不是很清楚。

但是,我认为你要问的是,如果对一系列目标(与%模式字符匹配)使用相同的规则,那么你怎么知道真正的目标是什么?

这是使用automatic variables完成的。这些对于减少拼写错误并使配方更易于阅读的规则很有帮助,但它们最初是为隐式规则创建的,并且它们在那里绝对必要。

在模式规则的配方中,$@变量将扩展为正在构建的目标的名称,$<将扩展为第一个先决条件,$*将扩展为与模式匹配的目标部分。所以对于这样的规则:

%-foo : %-bar
        echo $@ / $< / $*

当make构建目标blah-foo时,输出将为:

blah-foo / blah-bar / blah