run configurar makefile

configurar - makefile windows



Verificación de condiciones complejas en Makefile. (1)

Si su make es GNU-make y todas las variables definidas incluyen un carácter que no es espacio,

ifdef VAR1 && VAR2 && VAR3

Se puede escribir como

ifneq ($(and $(VAR1),$(VAR2),$(VAR3)),)

En una nota relacionada, probablemente and función requiera la versión 3.81 o posterior.

En caso de que algunas variables definidas sean cadenas vacías, si preparamos las siguientes funciones:

ifndef_any_of = $(filter undefined,$(foreach v,$(1),$(origin $(v)))) ifdef_any_of = $(filter-out undefined,$(foreach v,$(1),$(origin $(v))))

entonces las siguientes condiciones:

ifdef VAR1 || VAR2 ifdef VAR1 && VAR2

Pueden escribirse respectivamente como:

ifneq ($(call ifdef_any_of,VAR1 VAR2),) ifeq ($(call ifndef_any_of,VAR1 VAR2),)

En mi Makefile me gustaría comprobar la siguiente condición compleja:

ifdef VAR1 || VAR2 || VAR3 action endif

sin embargo, la documentación dice que la sintaxis no está soportada. Así que la única solución simple que se me ocurrió es usar la concatenación:

ifneq ($(VAR1)$(VAR2)$(VAR3),) action endif

¿Hay alguna otra solución más correcta?

Para el siguiente caso:

ifdef VAR1 && VAR2 && VAR3 action endif

uno necesita escribir

ifdef VAR1 ifdef VAR2 ifdef VAR3 action endif endif endif

que también es feo. ¿Hay alternativas más elegantes?