我正在运行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
?
答案 0 :(得分:20)
看来你的makefile的名字不是'Makefile'或'makefile'。如果不同,请说'abc'尝试运行'make -f abc clean'
答案 1 :(得分:7)
我想你现在已经弄明白了。 答案隐藏在您的第一封邮件中。
默认情况下,make
命令会将makefile
,Makefile
和GNUMakefile
视为输入文件,并且您的文件夹中包含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