Estoy tratando de incluir algunos entornos en un Makefile. El archivo env se ve así:
FOO=bar
BAZ=quux
Tenga en cuenta que no hay derivación export
a cada env var. Si agrego el archivo principal export
y solo include
el archivo env en el Makefile, todo funciona como debería. Pero necesito mantener el ambiente sin liderazgo export
. Eso me impide usarlo solo include envfile
en el Makefile.
También he intentado hacer algo como esto:
sed '/^#/!s/^/export /' envfile > $(BUILDDIR)/env
include $(BUILDDIR)/env
Pero hacer eso causa que arroje un error porque el archivo env no está ahí para incluirlo.
environment-variables
make
Michael Irwin
fuente
fuente
Respuestas:
Si está utilizando gnu make, lo que debería funcionar es incluir el
envfile
archivo, luego exportar la lista de variables obtenidas del mismo archivo:fuente
export $(shell...
línea. Solo necesito lainclude
línea.Tuve un problema similar y llegué a este hilo. Otra posible solución es simplemente hacer el comando make export sin ningún argumento:
Esto exportará todas las variables make como variables de entorno. Este comportamiento puede o no coincidir con todos los casos de uso, pero funcionó para mí y no involucró ninguna magia de scripting de shell.
fuente
Conserva los vars ENV preexistentes
Correr
fuente
Aquí hay una solución elegante que no importa Make vars, pero establece exportaciones de entorno para subprocesos de shell. Personalmente prefiero mantener mis scripts dinámicos de perfiles.
Hay algunas trampas. Lamentablemente, ENV no funciona, creo que debería (pero eso es un problema con Bash, no Make). Además, realmente requiere otra línea, porque el intérprete de shell predeterminado de Make es / bin / sh.
En el lado positivo, esto también permite incluir funciones de shell en los scripts de Makefile, pero solo para los scripts de recetas. No sé cómo les va a otros proyectiles además de Bash. Y hay un poco más en juego. Puse un archivo de prueba como GIST .
Hay muchos scripts de shell complicados imaginables. Me gusta este Q / A mejor para las respuestas simples.
fuente
si su nombre de archivo es,
.makerc
entonces puede incluirlo en Makefile tan simple como esto:Prefiero agregar un
-
signo antesinclude
, para suprimir cualquier advertencia.fuente