“干净”导致“没有规则让目标’干净’”

我正在运行Ubuntu 10.04。 每当我运行make clean ,我得到这个:

make:***没有规则让目标“干净”。 停止。

这是我的makefile:

 CC = gcc CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall PROGRAMS = digitreversal all : $(PROGRAMS) digitreversal : digitreversal.o $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) .PHONY: clean clean: @rm -f $(PROGRAMS) *.o core 

任何想法为什么它不工作?

编辑:好像在做:

 make -f Makefile.txt clean 

作品。 现在:是否有任何设置需要更改,所以我不必每次都执行-f Makefile.txt

看来你的makefile的名字不是’Makefile’或’makefile’。 万一它是不同的说’abc’尝试运行’make -f abc clean’

我想你现在已经弄明白了。 答案隐藏在您的第一封邮件中。

make命令默认查找makefileMakefileGNUMakefile作为输入文件,你的文件夹中有Makefile.txt 。 只需删除文件扩展名( .txt )即可。

检查文件是否为GNUMakefile,makefile或Makefile。

如果它被调用(并且你不想重命名),那么试试:

make -f othermakefilename clean

这对我有用。 你确定要缩进标签吗?

 CC = gcc CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall PROGRAMS = digitreversal all : $(PROGRAMS) digitreversal : digitreversal.o [tab]$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) .PHONY: clean clean: [tab]@rm -f $(PROGRAMS) *.o core 

您已成为Makefile中最常见错误的受害者。 您总是需要在每个命令的开头放置一个Tab。 你已经在$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)@rm -f $(PROGRAMS) *.o core行之前加了空格。 如果你用Tab替换它们,你会没事的。

但是,此错误不会导致“无法制定目标…”错误。 这可能意味着你的问题超出了你的Makefile。 您是否检查过这是正确的Makefile,就像您要指定命令一样? 尝试显式传递它作为参数make, make -f Makefile并让我们知道会发生什么。