makefile - rayotutoriales - plugin de rangos
¿Qué hacen @,-y+como prefijos para las líneas de recetas en Make? (2)
Controlan el comportamiento de make para las líneas de comando etiquetadas:
@
suprime el ''eco'' normal del comando que se ejecuta.-
significa ignorar el estado de salida del comando que se ejecuta (normalmente, un estado de salida distinto de cero detendría esa parte de la compilación).+
significa ''ejecutar este comando bajomake -n
'' (o ''make -t'' o ''make -q'') cuando los comandos no se ejecutan normalmente. Ver también la especificación POSIX paramake
y también §9.3 del manual GNU Make.
La notación +
es una generalización (POSIX-estandarizada) del mecanismo de facto (no estandarizado) mediante el cual una línea de comando que contiene ${MAKE}
o $(MAKE)
se ejecuta bajo make -n
.
( @
se trata en §5.2 del manual GNU Make; -
se describe en §5.5 ; y §5.7.1 menciona el uso de +
.)
En el manual de GNU Makefile, mentions estos prefijos.
Si se proporciona .ONESHELL, solo se verificará en la primera línea de la receta los caracteres de prefijo especiales (''@'', ''-'' y ''+'').
¿Qué hacen estos prefijos y dónde se mencionan?
@
evita que la línea de comando emita ecos en la consola. Puedes hacerlo globalmente con -s
o --keep-silent
-
le dice a make que continúe, incluso si el comando falla por alguna razón. Puede hacerlo globalmente a través de la bandera -i
(o --ignore-errors
).
+
No estaba familiarizado con antes de que preguntaras. Por lo que puedo decir, niega el efecto de -n
, -t
y -q
, todos los cuales básicamente indican que no se ejecutan realmente los comandos. Entonces una línea con un +
en el frente se ejecutará de todos modos.
Si lees el manual oficial de Gnu Make, todos se mencionan en el Capítulo 5 . En mi vieja copia del manual que era el capítulo sobre "comandos", pero el término du jour ahora parece ser "recetas".