Скорее всего вы не указываете таргет явно. По-умолчанию исполняется первый таргет (кроме тех, которые начинаются с точки) - а в этом таргете (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 ‘.’)
Спасибо. Немного поэкспериментировал.
1. Сначала написал следующее:
all: hello clean
и все отработало как надо.
2. Затем сделал как вы предложили - убрал clean из .phony, makefile принял вид:
.PHONY: all
all: hello
main.o: main.cpp
g++ -c -o main.o main.cpp
hello: main.o
g++ -o hello main.o
Создал файл clean, в который перенес следующее:
.PHONY: clean
clean:
rm -rf *.o
Можете подсказать, почему после этого 'make clean' не выполняет желаемое?