makefile中的隐式规则

时间:2014-01-08 04:14:19

标签: makefile implicits

考虑以下makefile:

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

这没关系。但是,如果是makefile:

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文件。

1 个答案:

答案 0 :(得分:1)

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