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

时间:2010-11-15 07:02:23

标签: c build makefile

我正在运行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

5 个答案:

答案 0 :(得分:20)

看来你的makefile的名字不是'Makefile'或'makefile'。如果不同,请说'abc'尝试运行'make -f abc clean'

答案 1 :(得分:7)

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

默认情况下,make命令会将makefileMakefileGNUMakefile视为输入文件,并且您的文件夹中包含Makefile.txt。只需删除文件扩展名(.txt)即可。

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

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

如果它被调用(并且您不想重命名),请尝试:

make -f othermakefilename clean

答案 4 :(得分:1)

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

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