【问题标题】:"make clean" results in "No rule to make target `clean'"“make clean”会导致“No rule to make target ‘clean’”
【发布时间】:2011-05-10 02:06:50
【问题描述】:

我正在运行 Ubuntu 10.04。每当我运行make clean 时,我都会得到:

make: *** 没有使目标“干净”的规则。停下来。

这是我的生成文件:

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,并且您还有一个没有clean 目标的makefile,并且当您调用make clean 时,默认情况下使用makefile 而不是Makefile
  • 只需将您的Makefile.txt 重命名为Makefile,名称中不带扩展名。
  • 我的 Mac 上遇到了同样的问题。由于某种原因,make 命令找不到MakeFile。重命名为makefile 解决了这个问题。这很荒谬!

标签: c build makefile


【解决方案1】:

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

但是,此错误不会导致“没有规则可以设置目标...”错误。这可能意味着您的问题超出了您的 Makefile 范围。您是否检查过这是正确的 Makefile,就像您要指定命令的那个一样?尝试将其作为参数显式传递给 make,make -f Makefile,然后告诉我们会发生什么。

【讨论】:

  • 如果标签丢失,您不会收到No rule to make target 错误,而是会收到missing separator 错误。
  • 你是对的,正如我已经澄清的那样,Makefile 本身不会有问题。
【解决方案2】:

这对我有用。您确定要使用制表符缩进吗?

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

【讨论】:

    【解决方案3】:

    您的makefile 的名称似乎不是'Makefile' 或'makefile'。万一它是不同的说'abc'尝试运行'make -f abc clean'

    【讨论】:

      【解决方案4】:

      检查文件名为 GNUMakefile、makefile 或 Makefile。

      如果它被称为其他名称(并且您不想重命名它),请尝试:

      make -f othermakefilename clean

      【讨论】:

        【解决方案5】:

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

        make 命令默认查找makefileMakefileGNUMakefile 作为输入文件,并且您的文件夹中有Makefile.txt。只需删除文件扩展名 (.txt) 即可。

        【讨论】:

          猜你喜欢
          • 2016-11-19
          • 2021-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-22
          • 1970-01-01
          • 2019-09-15
          • 1970-01-01
          • 2013-02-02
          相关资源
          最近更新 更多