"сделать чистые" результаты "Нет правила, чтобы сделать цель чистой"

Я запускаю Ubuntu 10.04. Всякий раз, когда я запускаю make clean, я получаю следующее:

make: *** Нет правила, чтобы сделать цель "чистой". Стоп.

Вот мой make файл:

CC = gcc
CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall
PROGRAMS = digitreversal
all : $(PROGRAMS)
digitreversal : digitreversal.o
       $(CC) $(CFLAGS) -o [email protected] $^ $(LDFLAGS)
.PHONY: clean
clean:
       @rm -f $(PROGRAMS) *.o core

Любые идеи, почему он не работает?

EDIT: Кажется, что:

make -f Makefile.txt clean

работает. Теперь: есть ли какие-либо настройки для изменения, поэтому мне не нужно делать -f Makefile.txt каждый раз?

Ответы

Ответ 1

Кажется, ваше имя файла makefile не является "Makefile" или "makefile". В противном случае скажем, что 'abc' попробуйте запустить make -f abc clean '

Ответ 2

Я полагаю, вы уже поняли это. Ответ скрыт в вашей первой почте.

Команда make по умолчанию ищет makefile, makefile и GNUMakefile в качестве входного файла, и у вас есть Makefile.txt в вашей папке. Просто удалите расширение файла (.txt), и оно должно работать.

Ответ 3

Вы стали жертвой наиболее распространенных ошибок в Make файлах. Вам всегда нужно поместить Tab в начале каждой команды. Вы помещаете пробелы перед строками $(CC) $(CFLAGS) -o [email protected] $^ $(LDFLAGS) и @rm -f $(PROGRAMS) *.o core. Если вы замените их на вкладку, все будет в порядке.

Однако эта ошибка не приводит к ошибке "Нет правила для создания цели...". Вероятно, это означает, что ваша проблема лежит вне вашего Makefile. Вы проверили, что это правильный Makefile, как в том, который вы хотите указать для своих команд? Попробуйте явно передать его как параметр, чтобы сделать, make -f Makefile и сообщить нам, что происходит.

Ответ 4

Убедитесь, что файл называется GNUMakefile, makefile или Makefile.

Если он называется чем-то другим (и вы не хотите его переименовывать), попробуйте:

make -f othermakefilename clean

Ответ 5

Это работает для меня. Вы уверены, что у вас есть отступы?

CC = gcc
CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall
PROGRAMS = digitreversal
all : $(PROGRAMS)
digitreversal : digitreversal.o
    [tab]$(CC) $(CFLAGS) -o [email protected] $^ $(LDFLAGS)

.PHONY: clean
clean:
    [tab]@rm -f $(PROGRAMS) *.o core