我知道make clean
的作用。
但是make $* clean
是什么意思呢?
我无法在任何地方找到明确的解释。
我知道make clean
的作用。
但是make $* clean
是什么意思呢?
我无法在任何地方找到明确的解释。
正如Ross所说,由于您没有提供足够的上下文,我们无法提供帮助。您至少需要提供make $* clean
出现的规则。
不过,我猜它看起来像这样:
%.xyz:
make $* clean
这里,$*
是一个自动变量,它会扩展为目标的词干(与模式中的%
匹配的文本)。因此,如果您调用make foobar.xyz
,这条规则将调用make foobar clean
:它会运行一个子make,构建foobar
目标,然后构建clean
目标。
我还没有看到过类似上面的东西,尽管我可以想出理由来做。更常见的情况是,如果您输错了命令,它实际上应该是make -C $* clean
,就像这样的规则:
%.xyz:
make -C $* clean
请注意,在调用子make时,永远不要使用静态字符串make
;你应该总是使用$(MAKE)
或${MAKE}
。在这个例子中运行make foobar.xyz
将运行make -C foobar clean
,这意味着切换到目录foobar
并在其中运行clean
目标。
$*
会扩展为传递给shell脚本的参数。#!/usr/bin/env bash
# filename clean.sh
make $* clean
#./clean.sh --silent
这将最终将--silent
传递给make
应用程序并执行以下命令。
#make --silent clean
最后,shell脚本中的$*
是由shell而不是make
应用程序扩展的。