Я отвечаю на эту древнюю тему, потому что она поднимается высоко в поиске, а ответы сбивают с толку. Чтобы сделать то, что хочет пользователь, все, что нужно, это:
clean:
@rm -f *.o
@ означает, что make не будет отображать эту команду.
Аргумент -f
для rm
указывает rm
игнорировать любые ошибки, например, отсутствие файлов * 1007, и всегда возвращать успех.
Я удалил -r из примера OP, потому что он означает рекурсивный, и здесь мы просто rm
ing .o
файлов, и ничего не рекурсивно.
Нет необходимости в 2>&1 >/dev/null
, потому что с -f
не будет печататься ошибок.
.SILENT: clean
работает вместо @
, но он не находится в том же месте в Makefile, что и команда, на которую он влияет, поэтому кто-то, обслуживающий проект позже, может быть сбит с толку. Вот почему @ предпочтительнее. Это лучше месторасположение ссылки.