“干净”导致“没有规则让目标’干净’”
我正在运行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
命令默认查找makefile
, Makefile
和GNUMakefile
作为输入文件,你的文件夹中有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
并让我们知道会发生什么。