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

时间:2015-07-29 15:26:16

标签: c makefile

我正在浏览{{3}}教程,在那里我必须创建这个make文件:

 CFLAGS=-wall  -g

 clean:
   rm  -f  ex1

当我输入此命令时:

  

$ make clean

我收到以下错误:

make: *** No rule to make target `clean'.  Stop.

我确定我正在使用TABS。为什么我收到此错误?我该如何解决?

3 个答案:

答案 0 :(得分:1)

此处的问题,正如对该帖子的一些评论所表明的那样,您将文件命名为make而不是传统的Makefile(或替代名称GNUMakefile和{{1} GNU make支持)。

请参阅GNU制作手册中的What Name to Give Your Makefile

如果您想使用备用名称(例如makefile),则需要告诉make将该文件与make标志一起使用(在本手册的该部分中也会提到) )。

-f

make -f make 错误是由makefile中的缩进错误引起的。空格而不是食谱线上的标签等

答案 1 :(得分:-1)

我的印象是目标不应该在他们面前有空格。

另外,Make将第一个目标视为默认目标(我们传统上称之为“全部”#);因此,如果'清洁'是你唯一的目标,它将被视为默认目标。

答案 2 :(得分:-1)

我猜你的缩进是不可靠的。对于文件应缩进的方式,make 非常非常

您的文件应如下所示:

CFLAGS=-wall -g

clean:
        rm -f ex1

注意文件中的所有方式都是干净的(前面没有空格),以及如何有两个选项卡(这里用8个空格表示,因为我无法在SO上表示选项卡...)

基本上,Make是一个古老的程序,对于如何完成工作有非常非常特别的规则。请小心并尽可能地遵循缩进规则。