我运行的是 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 中最常见错误的受害者。您始终需要在每个命令的开头放置一个制表符。您已在
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
和 @rm -f $(PROGRAMS) *.o core
行之前添加了空格。如果你用 Tab 替换它们,那就没问题了。
但是,此错误不会导致“没有规则来创建目标...”错误。这可能意味着您的问题超出了您的 Makefile 范围。您是否检查过这是正确的 Makefile,就像您想要指定命令的 Makefile 一样?尝试显式地将其作为参数传递给 make,
make -f Makefile
,并让我们知道会发生什么。
也许有一天这会对某些人有所帮助。
我在 MacO 上制作了
Makefile
并将其复制到 Linux(mint 操作系统)。由于某种原因,这不太好(不知道为什么)。只需用 Makefile
打开 vim
,然后保存并退出。之后它应该开始正常工作