Ответ 1
Кажется, ваше имя файла makefile не является "Makefile" или "makefile". В противном случае скажем, что 'abc' попробуйте запустить make -f abc clean '
Я запускаю 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
каждый раз?
Кажется, ваше имя файла makefile не является "Makefile" или "makefile". В противном случае скажем, что 'abc' попробуйте запустить make -f abc clean '
Я полагаю, вы уже поняли это. Ответ скрыт в вашей первой почте.
Команда make
по умолчанию ищет makefile
, makefile
и GNUMakefile
в качестве входного файла, и у вас есть Makefile.txt
в вашей папке. Просто удалите расширение файла (.txt
), и оно должно работать.
Вы стали жертвой наиболее распространенных ошибок в Make файлах. Вам всегда нужно поместить Tab в начале каждой команды. Вы помещаете пробелы перед строками $(CC) $(CFLAGS) -o [email protected] $^ $(LDFLAGS)
и @rm -f $(PROGRAMS) *.o core
. Если вы замените их на вкладку, все будет в порядке.
Однако эта ошибка не приводит к ошибке "Нет правила для создания цели...". Вероятно, это означает, что ваша проблема лежит вне вашего Makefile. Вы проверили, что это правильный Makefile, как в том, который вы хотите указать для своих команд? Попробуйте явно передать его как параметр, чтобы сделать, make -f Makefile
и сообщить нам, что происходит.
Убедитесь, что файл называется 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 [email protected] $^ $(LDFLAGS)
.PHONY: clean
clean:
[tab]@rm -f $(PROGRAMS) *.o core