Ответ 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
может возвращать другие ошибки при определенных обстоятельствах, и это делает ваше намерение понятным.