Este apéndice resume las directivas, las funciones de manipulación de texto y las variables especiales que entiende GNU make.
Para otros resúmenes, consulte Nombres de objetivos especiales incorporados, Catálogo de reglas incorporadas y Resumen de opciones.
A continuación, un resumen de las directivas que reconoce GNU make:
define variabledefine variable =define variable :=define variable ::=define variable :::=define variable +=define variable ?=endefDefine variables de varias líneas.
Consulte Definición de variables de varias líneas.
undefine variableAnula la definición de variables.
Consulte Anulación de la definición de variables.
ifdef variableifndef variableifeq (a,b)ifeq "a" "b"ifeq 'a' 'b'ifneq (a,b)ifneq "a" "b"ifneq 'a' 'b'elseendifEvalúa condicionalmente una parte del makefile.
Consulte Partes condicionales de los makefiles.
include file-include filesinclude fileIncluye otro makefile.
Consulte Inclusión de otros makefiles.
override variable-assignmentDefine una variable, anulando cualquier definición previa, incluso una de la línea de órdenes.
Consulte La directiva override.
exportIndica a make que exporte todas las variables a los procesos hijos de forma predeterminada.
Consulte Comunicación de variables a un sub-make.
export variableexport variable-assignmentunexport variableIndica a make si debe o no exportar una variable concreta a los procesos hijos.
Consulte Comunicación de variables a un sub-make.
private variable-assignmentImpide que esta asignación de variable sea heredada por los prerrequisitos (prerequisite).
Consulte Supresión de la herencia.
vpath pattern pathEspecifica una ruta de búsqueda para los archivos que coinciden con un patrón ‘%’.
Consulte La directiva vpath.
vpath patternElimina todas las rutas de búsqueda especificadas previamente para pattern.
vpathElimina todas las rutas de búsqueda especificadas previamente en cualquier directiva vpath.
A continuación, un resumen de las funciones incorporadas (consulte Funciones para transformar texto):
$(subst from,to,text)Reemplaza from por to en text.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(patsubst pattern,replacement,text)Reemplaza las palabras que coinciden con pattern por replacement en text.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(strip string)Elimina los espacios en blanco sobrantes de string.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(findstring find,text)Localiza find en text.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(filter pattern…,text)Selecciona en text las palabras que coinciden con una de las palabras pattern.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(filter-out pattern…,text)Selecciona en text las palabras que no coinciden con ninguna de las palabras pattern.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(sort list)Ordena las palabras de list lexicográficamente, eliminando los duplicados.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(word n,text)Extrae la n-ésima palabra (con origen en uno) de text.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(words text)Cuenta el número de palabras en text.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(wordlist s,e,text)Devuelve la lista de palabras de text desde s hasta e.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(firstword names…)Extrae la primera palabra de names.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(lastword names…)Extrae la última palabra de names.
Consulte Funciones para la sustitución y el análisis de cadenas.
$(dir names…)Extrae la parte de directorio de cada nombre de archivo.
Consulte Funciones para nombres de archivo.
$(notdir names…)Extrae la parte que no es de directorio de cada nombre de archivo.
Consulte Funciones para nombres de archivo.
$(suffix names…)Extrae el sufijo (el último ‘.’ y los caracteres siguientes) de cada nombre de archivo.
Consulte Funciones para nombres de archivo.
$(basename names…)Extrae el nombre base (el nombre sin el sufijo) de cada nombre de archivo.
Consulte Funciones para nombres de archivo.
$(addsuffix suffix,names…)Añade suffix al final de cada palabra de names.
Consulte Funciones para nombres de archivo.
$(addprefix prefix,names…)Antepone prefix a cada palabra de names.
Consulte Funciones para nombres de archivo.
$(join list1,list2)Une las palabras de dos listas paralelas.
Consulte Funciones para nombres de archivo.
$(wildcard pattern…)Busca nombres de archivo que coinciden con un patrón de nombres de archivo de la shell (no un patrón ‘%’).
Consulte La función wildcard.
$(realpath names…)Para cada nombre de archivo de names, lo expande a un nombre absoluto que no contiene ningún ., .. ni enlace simbólico.
Consulte Funciones para nombres de archivo.
$(abspath names…)Para cada nombre de archivo de names, lo expande a un nombre absoluto que no contiene componentes . ni .., pero conserva los enlaces simbólicos.
Consulte Funciones para nombres de archivo.
$(error text…)Cuando se evalúa esta función, make genera un error fatal con el mensaje text.
Consulte Funciones que controlan Make.
$(warning text…)Cuando se evalúa esta función, make genera una advertencia con el mensaje text.
Consulte Funciones que controlan Make.
$(shell command)Ejecuta una orden de la shell y devuelve su salida.
Consulte La función shell.
$(origin variable)Devuelve una cadena que describe cómo se definió la variable de make variable.
Consulte La función origin.
$(flavor variable)Devuelve una cadena que describe el tipo (flavor) de la variable de make variable.
Consulte La función flavor.
$(let var [var ...],words,text)Evalúa text con los var ligados a las palabras de words.
Consulte La función let.
$(foreach var,words,text)Evalúa text con var ligado a cada palabra de words, y concatena los resultados.
Consulte La función foreach.
$(if condition,then-part[,else-part])Evalúa la condición condition; si no está vacía, sustituye por la expansión de then-part; en caso contrario, sustituye por la expansión de else-part.
Consulte Funciones para condicionales.
$(or condition1[,condition2[,condition3…]])Evalúa cada condición conditionN una a una; sustituye por la primera expansión no vacía. Si todas las expansiones están vacías, sustituye por la cadena vacía.
Consulte Funciones para condicionales.
$(and condition1[,condition2[,condition3…]])Evalúa cada condición conditionN una a una; si alguna expansión resulta en la cadena vacía, sustituye por la cadena vacía. Si todas las expansiones resultan en una cadena no vacía, sustituye por la expansión de la última condition.
Consulte Funciones para condicionales.
$(intcmp lhs,rhs[,lt-part[,eq-part[,gt-part]]])Compara lhs y rhs numéricamente; sustituye por la expansión de lt-part, eq-part o gt-part según si el lado izquierdo es menor que, igual a o mayor que el lado derecho, respectivamente.
Consulte Funciones para condicionales.
$(call var,param,…)Evalúa la variable var reemplazando cualquier referencia a $(1), $(2) por los valores del primer, segundo, etc. param.
Consulte La función call.
$(eval text)Evalúa text y luego lee el resultado como órdenes de makefile. Se expande a la cadena vacía.
Consulte La función eval.
$(file op filename,text)Expande los argumentos, luego abre el archivo filename usando el modo op y escribe text en ese archivo.
Consulte La función file.
$(value var)Se evalúa al contenido de la variable var, sin realizar ninguna expansión sobre él.
Consulte La función value.
A continuación, un resumen de las variables automáticas. Para información completa, consulte Variables automáticas.
$@El nombre de archivo del objetivo.
$%El nombre del miembro objetivo, cuando el objetivo es un miembro de un archivo de archivo (archive).
$<El nombre del primer prerrequisito.
$?Los nombres de todos los prerrequisitos que son más nuevos que el objetivo, separados por espacios.
Para los prerrequisitos que son miembros de un archivo de archivo, solo se usa el miembro indicado (consulte Uso de make para actualizar archivos de archivo).
$^$+Los nombres de todos los prerrequisitos, separados por espacios. Para los prerrequisitos que son miembros de un archivo de archivo, solo se usa el miembro indicado (consulte Uso de make para actualizar archivos de archivo). El valor de $^ omite los prerrequisitos duplicados, mientras que $+ los conserva y mantiene su orden.
$*La raíz (stem) con la que coincide una regla implícita (consulte Cómo coinciden los patrones).
$(@D)$(@F)La parte de directorio y la parte de archivo dentro del directorio de $@.
$(*D)$(*F)La parte de directorio y la parte de archivo dentro del directorio de $*.
$(%D)$(%F)La parte de directorio y la parte de archivo dentro del directorio de $%.
$(<D)$(<F)La parte de directorio y la parte de archivo dentro del directorio de $<.
$(^D)$(^F)La parte de directorio y la parte de archivo dentro del directorio de $^.
$(+D)$(+F)La parte de directorio y la parte de archivo dentro del directorio de $+.
$(?D)$(?F)La parte de directorio y la parte de archivo dentro del directorio de $?.
GNU make usa de forma especial las siguientes variables:
MAKEFILESMakefiles que se leen en cada invocación de make.
Consulte La variable MAKEFILES.
VPATHRuta de búsqueda de directorios para los archivos que no se encuentran en el directorio actual.
Consulte Ruta de búsqueda VPATH para todos los prerrequisitos.
SHELLEl nombre del intérprete de órdenes predeterminado del sistema, normalmente /bin/sh.
Puede establecer SHELL en el makefile para cambiar la shell usada para ejecutar las recetas (recipe). Consulte Ejecución de la receta. La variable SHELL se trata de forma especial al importarla del entorno y exportarla a él. Consulte Elección de la shell.
MAKESHELLSolo en MS-DOS, el nombre del intérprete de órdenes que make debe usar. Este valor tiene prioridad sobre el valor de SHELL. Consulte La variable MAKESHELL.
MAKEEl nombre con el que se invocó make. Usar esta variable en las recetas tiene un significado especial. Consulte Cómo funciona la variable MAKE.
MAKE_VERSIONLa variable incorporada ‘MAKE_VERSION’ se expande al número de versión del programa GNU make.
MAKE_HOSTLa variable incorporada ‘MAKE_HOST’ se expande a una cadena que representa el host para el que se compiló GNU make.
MAKELEVELEl número de niveles de recursión (sub-makes).
Consulte Comunicación de variables a un sub-make.
MAKEFLAGSLos indicadores dados a make. Puede establecer esto en el entorno o en un makefile para fijar indicadores.
Consulte Comunicación de opciones a un sub-make.
Nunca es apropiado usar MAKEFLAGS directamente en una línea de receta: su contenido puede no estar correctamente entrecomillado para su uso en la shell. Permita siempre que los make recursivos obtengan estos valores a través del entorno desde su padre.
GNUMAKEFLAGSOtros indicadores analizados por make. Puede establecer esto en el entorno o en un makefile para fijar los indicadores de la línea de órdenes de make. GNU make nunca establece esta variable por sí mismo. Esta variable solo es necesaria si desea fijar indicadores específicos de GNU make en un makefile conforme a POSIX. Esta variable será vista por GNU make e ignorada por otras implementaciones de make. No es necesaria si solo usa GNU make; en ese caso, use MAKEFLAGS directamente.
Consulte Comunicación de opciones a un sub-make.
MAKECMDGOALSLos objetivos dados a make en la línea de órdenes. Establecer esta variable no tiene efecto en el funcionamiento de make.
Consulte Argumentos para especificar las metas.
CURDIRSe establece al nombre de ruta absoluto del directorio de trabajo actual (tras procesar todas las opciones -C, si las hay). Establecer esta variable no tiene efecto en el funcionamiento de make.
Consulte Uso recursivo de make.
SUFFIXESLa lista predeterminada de sufijos antes de que make lea cualquier makefile.
.LIBPATTERNSDefine la nomenclatura de las bibliotecas que make busca, y su orden.
Consulte Búsqueda en directorios para las bibliotecas de enlazado.