Si en algún momento make ejecuta un comando que da un estado de salida distinto de cero, make terminará bruscamente. Este comportamiento es normalmente lo que buscamos, pues si no el error se puede propagar dando lugar a situaciones peligrosas.
Pero hay ocasiones en que no nos interesa que sea así, por ejemplo es muy habitual definir reglas para make que limpien los resultados de antiguas compilaciones:
clean: rm *.o rm ejecutable1 ejecutable2
Si en un momento dado no existe ningún fichero objeto pero si ejecutables, al invocar:
$ make cleanNos encontraremos con que make termina su ejecución antes de borrar los ejecutables, por eso la manera correcta de hacer esto sería:
clean: - rm *.o - rm ejecutable1 ejecutable2
El guión antes de los comandos evita que make se aborte aunque el comando haya fallado.