make和*之间有什么区别?

时间:2013-11-19 01:07:41

标签: makefile gnu

根据文档,我无法区分两者之间的区别。似乎可以在先决条件,目标和变量中使用它们中的任何一个来实现相同的结果。

1 个答案:

答案 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中的模式通配符。

因此$*变量的内容与该规则的目标和先决条件中匹配的相同。

处理归档目标时使用$%变量。

* 在目标和先决条件中使用时是文件名通配符。