-rm -rf (вместо rm -rf). Что означает первый "-" в начале строки в Makefile?
Ответ 1
Это означает, что make сам будет игнорировать любой код ошибки из rm.
В makefile, если какая-либо команда не выполняется, процесс make сам прекращает обработку. Префикс ваших команд с помощью -, вы уведомляете make о том, что он должен продолжать обработку правил независимо от результата команды.
Например, правило make файла:
clean:
rm *.o
rm *.a
не удалит файлы *.a, если rm *.o возвращает ошибку (если, например, не удаляются файлы *.o). Использование:
clean:
-rm *.o
-rm *.a
исправит эту конкретную проблему.
Кроме того: хотя это, вероятно, не нужно в вашем конкретном случае (поскольку флаг -f не позволяет rm возвращать ошибку, когда файл не существует), все же хорошей практикой явным образом отмечать строку в makefile - rm может возвращать другие ошибки при определенных обстоятельствах, и это делает ваше намерение понятным.