makefile environment-variables gnu-make

¿Es posible "desarmar" una variable de entorno en un Makefile?



environment-variables gnu-make (3)

¿No funciona lo siguiente para ti?

unexport CFLAGS 3rdparty: $(MAKE) -f Makefile.3rdparty

Estoy usando GNU make, e incluyendo una biblioteca de terceros en un proyecto que tiene un sistema de compilación que se vuelve loco si CFLAGS se define en el entorno cuando se lo llama. Me gusta tener CFLAGS definido en mi entorno por otros motivos. La compilación de la biblioteca se invoca desde otro archivo MAKE, por lo que digo, por ejemplo:

3rdparty: $(MAKE) -f Makefile.3rdparty

Pero me gustaría estar seguro de que CFLAGS está configurado cuando invoco make en el CFLAGS Makefile de terceros. Lo más cercano que puedo encontrar es decir:

CFLAGS:=

Pero esto todavía deja a CFLAGS en el ambiente, es solo una cadena vacía. Además de hacer algo horrible como decir:

3rd party: bash -c "unset CFLAGS; $(MAKE) -f Makefile.3rdparty"

¿Hay alguna manera fácil de "desactivar" la variable CFLAGS desde mi archivo MAKE primario, de modo que no esté presente en absoluto en el entorno cuando se invoca la biblioteca de terceros?


Esto puede ser problemático si necesita definir la variable para otros comandos en la receta y solo no desea que se defina en el submake. Otra solución es usar env - para invocar el submake y establecer explícitamente cualquier variable de entorno que necesite establecer en el submake, por ejemplo:

env - PATH="$$PATH" LD_LIBRARY_PATH="$$LD_LIBRARY_PATH" $(MAKE) -f Makefile.3rdparty


Para desarmar una variable de entorno en linux.

Utilizar:

export -n MY_ENV_VARIABLE