我知道make clean
做了什么。
但是make $* clean
做了什么?
我无法在任何地方找到明确的解释。
答案 0 :(得分:6)
正如罗斯所说,我们无法提供帮助,因为您还没有提供足够的背景信息。您需要至少提供make $* clean
出现的规则。
但是,我猜它看起来像这样:
%.xyz:
make $* clean
此处,$*
是automatic variable,它将扩展到目标的主干(与模式中的%
匹配的文本)。因此,如果您调用make foobar.xyz
,此规则将调用make foobar clean
:它将运行子制作,构建foobar
目标,然后构建clean
目标。
虽然我能想到这样做的原因,但我没有看到与上述相似的东西。更常见的是如果你错误输入命令并且它真的说make -C $* clean
,给出这样的规则:
%.xyz:
make -C $* clean
(请注意,在调用sub-make时,永远不会使用静态字符串make
; 总是 使用$(MAKE)
或{{ 1}})。在此示例中,运行${MAKE}
将运行make foobar.xyz
,这意味着更改到目录make -C foobar clean
并在那里运行foobar
目标。
答案 1 :(得分:1)
如果从shell脚本调用它,则$*
将扩展为传递给shell脚本的参数。
#!/usr/bin/env bash
# filename clean.sh
make $* clean
上面的shell脚本可以像
一样调用#./clean.sh --silent
最终会将--silent
传递给make
应用程序并执行以下命令。
#make --silent clean
最后,shell脚本中的$*
由shell扩展,而不是由make
应用程序扩展。