2010-06-07 18 views
27

En un Makefile, leo:rm-rf rf frente -rm

-rm rf (en lugar de rm-rf). ¿Qué significa el primer "-" al principio de la línea en un Makefile?

+2

Make es un lenguaje de programación, no solo una utilidad. ¡Los Makefiles son programas! ¡No digas que esto pertenece al superusuario! –

+0

FYI, '\ rm' también se puede usar en lugar de' -rm'. – Dennis

+0

Tenga en cuenta también que Make predefine '$ (RM)' que puede usar, para una máxima portabilidad. –

Respuesta

49

Significa que make ignorará cualquier código de error de rm.

En un makefile, si falla algún comando, el proceso make deja de procesar. Al anteponer sus comandos al -, notifique al make que debe continuar procesando las reglas sin importar el resultado del comando.

Por ejemplo, la norma makefile:

clean: 
    rm *.o 
    rm *.a 

se no eliminar los archivos *.a si rm *.o devuelve un error (si, por ejemplo, no hay *.o archivos a eliminar). Usando:

clean: 
    -rm *.o 
    -rm *.a 

solucionará ese problema en particular.


Aparte: Aunque es probable que no necesita en su caso específico (ya que la bandera -f parece prevenir rm de devolver un error cuando no existe el archivo), sigue siendo una buena práctica para marcar la línea de manera explícita en el makefile - rm puede devolver otros errores bajo ciertas circunstancias y hace que su intento sea claro.

+0

¡Claro y eficiente! Gracias. – user255607

+2

@ user255607 (si ese es su nombre real). Marcar como respondido luego (tilde verde al lado de la respuesta) – Ben

Cuestiones relacionadas