根据文档,我无法区分两者之间的区别。似乎可以在先决条件,目标和变量中使用它们中的任何一个来实现相同的结果。
答案 0 :(得分:1)
引用manual:
$%
是
目标成员名称,当目标是归档成员时。看到 档案。例如,如果目标是foo.a(bar.o),那么'$%'就是 bar.o和'$ @'是foo.a.当目标不是时,'$%'为空 档案成员。
$*
是
隐式规则匹配的词干(请参阅How Patterns Match)。 如果目标是dir / a.foo.b并且目标模式是。%。b那么 干是dir / foo。词干对于构造相关的名称很有用 文件。在静态模式规则中,词干是文件名的一部分 与目标模式中的'%'匹配。 (手册中有更多细节。)
* 在目标或先决条件列表中使用时为file glob wildcard。
在目标和先决条件中使用时,%是static pattern rule或普通pattern rule中的模式通配符。
因此$*
变量的内容与该规则的目标和先决条件中匹配的%相同。
处理归档目标时使用$%
变量。
* 在目标和先决条件中使用时是文件名通配符。