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