GNU/Linux >> Tutoriales Linux >  >> Linux

¿Verificación de condición de una línea en Makefile?

Estoy tratando de lograr algo como esto:
Si el usuario ejecuta make build_x version=1.0 luego muestre Building version 1.0 , else (make build_x sin version param) mostrar Building version latest . Pero, ¿cuál es la clave aquí? Necesito que la versión sea - por valor predeterminado (para poder usarlo correctamente con git ). Es por eso que uso la variable adicional version_info para reemplazar - con latest .

Así que mi código se ve así:

build_x:
    $(eval version ?= -)        
    $(eval version_info = ${if ["${version}" == "-"], "latest", "${version}"})

    ${INFO} "Doing checkout according to version $(version_info)..."

Sé que probablemente el problema sea con esta condición dada a if .

¿Alguna idea?

Respuesta aceptada:

Esto funciona para mí:

version ?= -
ifeq (-,$(version))
  version_info = latest
else
  version_info = $(version)
endif

build_x:
    @echo version_info = $(version_info)

Establece version a - si no está configurado, completa version_info apropiadamente.

Uso de variables específicas del objetivo y una variante de una sola línea:

build_x: version ?= -
build_x: version_info = $(if $(version:-=),$(version),latest)
build_x:
    @echo version_info = $(version_info)

Esto funciona de la siguiente manera (consulte la documentación general de GNU Make):

  • version ?= - establece version a - si aún no está configurado
  • if comprueba su primer argumento, lo evalúa para ver si está vacío o no, y se reemplaza con el segundo argumento si el primero no está vacío y el tercero si lo está
  • $(version:-=) evalúa version , reemplazando - con la cadena vacía (: introduce el reemplazo, la clave de búsqueda es el texto antes de = , el reemplazo es el texto después de = )

Linux
  1. Cómo verificar la versión de Redhat

  2. Comprobar la versión de Wordpress en uso

  3. Cómo comprobar la versión de CentOS

  4. Cómo comprobar la versión de Ubuntu desde la línea de comandos

  5. Condición if/else de una línea en scripts de shell de Linux

Cómo verificar la versión de Ubuntu usando la línea de comandos

3 formas de comprobar la versión del kernel de Linux en la línea de comandos

Cómo comprobar la versión del sistema operativo con la línea de comandos de Linux

¿Cómo comprobar la versión de OpenGL?

4 formas de comprobar la versión de CentOS en la línea de comandos de Linux

¿Cómo verificar la versión del sistema de archivos XFS?