Makefile - Directivas
Existen numerosas directivas disponibles en diversas formas. losmakeEs posible que el programa de su sistema no admita todas las directivas. Así que compruebe si sumake apoya las directivas que estamos explicando aquí. GNU make apoya estas directivas.
Directivas condicionales
Las directivas condicionales son:
los ifeqLa directiva comienza el condicional y especifica la condición. Contiene dos argumentos, separados por una coma y entre paréntesis. La sustitución de variables se realiza en ambos argumentos y luego se comparan. Las líneas del archivo MAKE que siguen al ifeq se obedecen si los dos argumentos coinciden; de lo contrario, se ignoran.
los ifneqLa directiva comienza el condicional y especifica la condición. Contiene dos argumentos, separados por una coma y entre paréntesis. La sustitución de variables se realiza en ambos argumentos y luego se comparan. Las líneas del archivo MAKE que siguen a ifneq se obedecen si los dos argumentos no coinciden; de lo contrario, se ignoran.
los ifdefLa directiva comienza el condicional y especifica la condición. Contiene un solo argumento. Si el argumento dado es verdadero, la condición se vuelve verdadera.
los ifndefLa directiva comienza el condicional y especifica la condición. Contiene un solo argumento. Si el argumento dado es falso, la condición se convierte en verdadera.
los elseLa directiva hace que se obedezcan las siguientes líneas si el condicional anterior falló. En el ejemplo anterior, esto significa que el segundo comando de vinculación alternativo se usa siempre que no se usa la primera alternativa. Es opcional tener un else en un condicional.
los endifLa directiva finaliza el condicional. Todo condicional debe terminar con un endif.
Sintaxis de las directivas condicionales
La sintaxis de un condicional simple sin más es la siguiente:
conditional-directive
text-if-true
endif
El texto si es verdadero puede ser cualquier línea de texto, para ser considerado como parte del archivo MAKE si la condición es verdadera. Si la condición es falsa, no se usa texto en su lugar.
La sintaxis de un condicional complejo es la siguiente:
conditional-directive
text-if-true
else
text-if-false
endif
Si la condición es verdadera, se usa text-if-true; de lo contrario, se utiliza text-if-false. El texto si es falso puede ser cualquier número de líneas de texto.
La sintaxis de la directiva condicional es la misma si el condicional es simple o complejo. Hay cuatro directivas diferentes que prueban varias condiciones. Son como se dan -
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
Las directivas opuestas de las condiciones anteriores son las siguientes:
ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"
Ejemplo de directivas condicionales
libs_for_gcc = -lgnu
normal_libs =
foo: $(objects)
ifeq ($(CC),gcc)
$(CC) -o foo $(objects) $(libs_for_gcc)
else
$(CC) -o foo $(objects) $(normal_libs)
endif
La directiva de inclusión
los include directive permite makepara suspender la lectura del archivo MAKE actual y leer uno o más archivos MAKE antes de continuar. La directiva es una línea en el archivo MAKE que se ve a continuación:
include filenames...
Los nombres de archivo pueden contener patrones de nombres de archivos de shell. Se permiten e ignoran espacios adicionales al principio de la línea, pero no se permite una tabulación. Por ejemplo, si tiene tres archivos `.mk ', a saber,` a.mk', `b.mk 'y` c.mk', y $ (bar), entonces se expande a bish bash, y luego lo siguiente expresión.
include foo *.mk $(bar)
is equivalent to:
include foo a.mk b.mk c.mk bish bash
Cuando el makeprocesa una directiva de inclusión, suspende la lectura del archivo MAKE y lee de cada archivo listado a su vez. Cuando eso termine,make reanuda la lectura del archivo MAKE en el que aparece la directiva.
La Directiva de anulación
Si se ha establecido una variable con un argumento de comando, se ignoran las asignaciones ordinarias en el archivo MAKE. Si desea establecer la variable en el archivo MAKE a pesar de que se estableció con un argumento de comando, puede usar una directiva de anulación, que es una línea que se ve a continuación:
override variable = value
or
override variable := value