@rust21

Создание простого makefile. Почему не отрабатывает цель clean?

Изучаю утилиту make. В качестве примера накидал следующий простой пример в makefile:
.PHONY: all clean

all: hello

clean:
	rm -rf hello *.o

main.o: main.cpp
	g++ -c -o main.o main.cpp

hello: main.o
	g++ -o hello main.o


Не могу понять, почему не отрабатывает clean (в папке появляется объектный файл main.o).
Подскажите, что делаю не так?!
  • Вопрос задан
  • 2822 просмотра
Решения вопроса 1
@brutal_lobster
Скорее всего вы не указываете таргет явно. По-умолчанию исполняется первый таргет (кроме тех, которые начинаются с точки) - а в этом таргете (all) никакого clean в зависимостях нет.
www.gnu.org/software/make/manual/make.html#How-Mak...
By default, make starts with the first target (not targets whose names start with ‘.’)


А .PHONY используется для обхода совпадения имени файла и сценария (попробуйте убрать clean из .phony, создать файл clean и выполнить make clean)
https://www.gnu.org/software/make/manual/html_node...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы