¿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