Makefile 为什么make坚持文件是最新的

Makefile 为什么make坚持文件是最新的,makefile,gnu-make,freebsd,Makefile,Gnu Make,Freebsd,考虑这个在FreeBSD上生成文件的简单示例 all: hello hello: hello.o gcc -o hello hello.o hello.o: hello.c gcc -c hello.c clean: rm hello.o hello 无论我做什么,都要更改hello.c,或者即使我将Makefile中的内容更改为完全无意义,,make说: `makefile' is up to date. 有什么可以解释这是怎么回事?我想你的makefi

考虑这个在FreeBSD上生成文件的简单示例

all: hello

hello: hello.o
     gcc -o hello hello.o

hello.o: hello.c
     gcc -c hello.c

clean:
     rm hello.o hello
无论我做什么,都要更改hello.c,或者即使我将Makefile中的内容更改为完全无意义,,make说:

`makefile' is up to date.

有什么可以解释这是怎么回事?

我想你的makefiles有点乱。请注意(对于GNU Make):
默认情况下,Make在查找makefile时,会按顺序尝试以下名称:GNUmakefile、makefile和makefile。
-确保您没有创建GNUmakefile`

当谈到基于
make
FreeBSD时,它将是:
如果没有-f makefile makefile选项,make将尝试打开“makefile”,然后打开“makefile”,以查找规范。

我可以想象,唯一的情况如下:

> cat Makefile
all: hello

hello: hello.o
    cc -o hello hello.o


hello.o: hello.c
    cc -c hello.c

clean:
    rm hello.o hello
> make
cc -c hello.c
cc -o hello hello.o
> ./hello
Hello world!
> make clean
rm hello.o hello
> touch makefile
> echo "makefile:" > .depend
> make
`makefile' is up to date.

什么是
m
?我在makefile中没有看到它。对不起,拼写错误应该是makefile。如果我用gmake而不是FreeBSDs-make运行这个Makefile,它就会正常工作。在FreeBSD上生成gmake有什么区别?您的错误消息仍然与显示的生成文件不匹配。您可能需要刷新如何创建一个。另外,请告诉我们如何使用
make
命令。您提供了哪些参数?您的makefile的名称是什么?它不是“makefile”吗?您的工作目录中是否有名为“makefile”的文件?您是如何运行
make
?您显示的输出与makefile内容不匹配,因为“
makefile”是最新的”表示
make`尝试生成的目标的名称是“makefile”。