Makefile Learning 6 - Juicio condicional

I. Introducción

        Las declaraciones condicionales pueden controlar la ejecución de make o ignorar partes específicas del Makefile según el valor de una variable. Una declaración condicional puede ser una comparación de dos variables diferentes o una variable con un valor constante. Las declaraciones condicionales solo se pueden usar para controlar la parte del Makefile que make realmente se ejecuta, y no pueden controlar el proceso de ejecución del shell normal. Makefile utiliza el control condicional para lograr flexibilidad y eficiencia en el procesamiento. Los ejemplos son los siguientes:

target:$(objects)
ifeq ($(ARCH),arm)
    arm-linux-gcc -o target $(object)
else
    gcc -o target $(objects)
endif

        En el ejemplo, la declaración de juicio condicional utiliza tres palabras clave "ifeq", "else" y "endif", entre las cuales:

        1. "ifeq" indica el comienzo de una declaración condicional y especifica una condición de comparación (igual). Entre paréntesis, use una coma "," para separar los dos parámetros, y los paréntesis y la palabra clave "ifeq" están separados por espacios . Las referencias de variables en los parámetros se amplían al realizar comparaciones de valores de variables. Después de "ifeq", se ejecutará cuando se cumpla la condición y se ignorará si no se cumple la condición.

        2. Después de "else" está la parte de ejecución cuando no se cumple la condición. Esta sección es opcional.

        3. "endif" indica el final de una declaración condicional, y cualquier expresión condicional debe terminar con "endif".

2. Introducción de palabras clave

        La gramática básica del juicio condicional es la siguiente

CONDITIONAL-DIRECTIVE
TEXT-IF-TRUE
endif

        TEXTO-SI-VERDADERO puede ser cualquier número de líneas de texto. Cuando la condición es verdadera, se considera como parte de la ejecución de make, y cuando la condición es falsa, no se ejecutará.

        La sintaxis que incluye la palabra clave "else" es la siguiente:

CONDITIONAL-DIRECTIVE
TEXT-IF-TRUE
else
TEXT-IF-FALSE
endif

         Si la condición es verdadera, se ejecuta "TEXTO-SI-VERDADERO", de lo contrario, se ejecuta "TEXTO-SI-FALSO". Los ejemplos son los siguientes:

ARCH:=arm

define test
ifeq ($(ARCH),arm)
  CC:=arm-linux-gcc
else
  CC:=gcc
endif
endef

$(warning $(eval $(call test)))

all:
        @echo CC=$(CC)

结果:
CC=arm-linux-gcc

        Nota : la línea "CONDICIONAL-DIRECTIVA" puede comenzar con varios espacios, estos espacios se ignorarán durante el procesamiento de creación, pero no puede comenzar con un carácter TAB.

1. si

Formato :

ifeq (ARG1,ARG2)

        Determine si ARG1 y ARG2 son iguales.

2. si no

Formato :

ifneq (ARG1,ARG2)

        Haz lo contrario de "ifeq".

3. si def

Formato :

ifdef VARIABLE-NAME

        Tenga en cuenta que ifdef solo prueba si una variable tiene un valor, no prueba si la variable está vacía. Para la variable "NOMBRE-VARIABLE", salvo el caso de "NOMBRE-VARIABLE=", definirla de otras formas hará que "ifdef" vuelva verdadero, es decir, le asigne un valor nulo de otras formas, y "ifdef " también devuelve verdadero. Los ejemplos son los siguientes:

bar=
foo=$(bar)
ifdef foo
frobzz = yes
else
frobozz = no
endif

结果:
frobozz=yes

foo=
ifdef foo
frobzz = yes
else
frobozz = no
endif

结果:
frobozz=no

4. indefenso

Formato:

ifndef VARIABLE-NAME

        El efecto es el opuesto de "ifdef".

3. Resumen

        Este artículo presenta el uso del juicio condicional y las palabras clave "ifeq", "ifneq", "ifdef", "ifndef" y presenta su uso con ejemplos.

Supongo que te gusta

Origin blog.csdn.net/to_be_better_wen/article/details/130069277
Recomendado
Clasificación