En el manual de GNU Makefile, menciona estos prefijos.
Si se proporciona .ONESHELL, solo se comprobará la primera línea de la receta para los caracteres de prefijo especiales ('@', '-' y '+').
¿Qué hacen estos prefijos y dónde se mencionan?
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 bajo make -n
' (o 'make -t' o 'make -q') cuando los comandos no se ejecutan normalmente. Consulte también la especificación POSIX para make
y también §9.3 del manual de GNU Make.
La +
notación es una generalización (estandarizada por POSIX ) 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 discute en §5.2 del manual GNU Make; -
se describe en §5.5 ; y §5.7.1 menciona el uso de +
).
@
evita que la línea de comando se repita 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 -i
bandera (o --ignore-errors
).
+
No estaba familiarizado antes de que preguntaras. Por lo que puedo decir, niega el efecto de -n
, -t
y -q
, todo lo cual básicamente le dice a make que no ejecute los comandos. Por lo tanto, una línea con un +
frente se ejecutaría de todos modos.
Si lees el manual oficial de Gnu Make, todos se mencionan en el Capítulo 5 . En mi antigua copia del manual que era el capítulo sobre "comandos", pero el término du jour ahora parece ser "recetas".