"make clean" приводит к "Нет правила, чтобы сделать цель" clean "" - PullRequest
20 голосов
/ 15 ноября 2010

Я использую 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 $@ $^ $(LDFLAGS)
.PHONY: clean
clean:
       @rm -f $(PROGRAMS) *.o core

Есть идеи, почему он не работает?

РЕДАКТИРОВАТЬ: Кажется, что делает:

make -f Makefile.txt clean

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

Ответы [ 5 ]

21 голосов
/ 15 ноября 2010

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

7 голосов
/ 24 июля 2011

Полагаю, вы уже поняли это. Ответ скрыт в вашем первом письме.

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

2 голосов
/ 15 ноября 2010

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

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

make -f othermakefilename clean

2 голосов
/ 15 ноября 2010

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

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

1 голос
/ 15 ноября 2010

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...