我正在阅读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,
我不明白%规则在这些不同情况下的运作方式不同
答案 0 :(得分:1)
我不确定我理解你的问题:它不是很清楚。
但是,我认为你要问的是,如果对一系列目标(与%
模式字符匹配)使用相同的规则,那么你怎么知道真正的目标是什么?
这是使用automatic variables完成的。这些对于减少拼写错误并使配方更易于阅读的规则很有帮助,但它们最初是为隐式规则创建的,并且它们在那里绝对必要。
在模式规则的配方中,$@
变量将扩展为正在构建的目标的名称,$<
将扩展为第一个先决条件,$*
将扩展为与模式匹配的目标部分。所以对于这样的规则:
%-foo : %-bar
echo $@ / $< / $*
当make构建目标blah-foo
时,输出将为:
blah-foo / blah-bar / blah