diff --git a/source/implicit_rules.rst b/source/implicit_rules.rst index e229658..b125471 100644 --- a/source/implicit_rules.rst +++ b/source/implicit_rules.rst @@ -336,7 +336,7 @@ make就会规则下的命令,所以,在模式规则中,目标可能会是 - ``$+`` : 这个变量很像 ``$^`` ,也是所有依赖目标的集合。只是它不去除重复的依赖目标。 - ``$*`` : 这个变量表示目标模式中 ``%`` 及其之前的部分。如果目标是 ``dir/a.foo.b`` ,并且 目标的模式是 ``a.%.b`` ,那么, ``$*`` 的值就是 ``dir/a.foo`` 。这个变量对于构造有关联的 - 文件名是比较有较。如果目标中没有模式的定义,那么 ``$*`` 也就不能被推导出,但是,如果目标文件的 + 文件名是比较有效。如果目标中没有模式的定义,那么 ``$*`` 也就不能被推导出,但是,如果目标文件的 后缀是make所识别的,那么 ``$*`` 就是除了后缀的那一部分。例如:如果目标是 ``foo.c`` ,因为 ``.c`` 是make所能识别的后缀名,所以, ``$*`` 的值就是 ``foo`` 。这个特性是GNU make的, 很有可能不兼容于其它版本的make,所以,你应该尽量避免使用 ``$*`` ,除非是在隐含规则或是静态