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?
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?
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.
¡Claro y eficiente! Gracias. – user255607
@ user255607 (si ese es su nombre real). Marcar como respondido luego (tilde verde al lado de la respuesta) – Ben
Make es un lenguaje de programación, no solo una utilidad. ¡Los Makefiles son programas! ¡No digas que esto pertenece al superusuario! –
FYI, '\ rm' también se puede usar en lugar de' -rm'. – Dennis
Tenga en cuenta también que Make predefine '$ (RM)' que puede usar, para una máxima portabilidad. –