1

考虑以下生成文件:

default: foo.o

clean:
    rm -f fmake test_second
%.o: %.c
    echo This is customized implicit rule

%.o: %.c
    echo This is overriden implicit rule

make命令的输出是

echo This is overriden implicit rule
This is overriden implicit rule

还行吧。但是,如果生成文件是:

default: foo.o

clean:
    rm -f fmake test_second
%.o: %.c
    echo This is customized implicit rule

%.o: %.z
    echo This is overriden implicit rule

那么make命令的输出是

echo This is customized implicit rule
This is customized implicit rule

我希望它与第一个示例中的相同。为什么不一样?我在 makefile 的目录中有一个 foo.c 和 foo.z 文件。

4

1 回答 1

1

您可以从所有不同类型的源文件构建目标文件:从 C 文件、C++ 文件、FORTRAN 文件等。在 make 中,仅当目标模式和先决条件模式都匹配时才会覆盖规则。否则,它只是定义了一种使用不同先决条件构建目标的新方法。

于 2014-01-08T05:02:31.487 回答