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 makey 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 -so--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 -ibandera (o --ignore-errors).
+No estaba familiarizado antes de que preguntaras. Por lo que puedo decir, niega el efecto de -n, -ty -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".