Quiero hacer una expansión inmediata de un comando de shell dentro de un Makefile, pero quiero que el comando de shell tenga acceso a las variables de entorno dentro del Makefile. Si uso $ (shell ...), se expande inmediatamente, pero no hay acceso a las variables. Si utilizo las comillas inversas, la expansión no es inmediata y me causa problemas más adelante en el Makefile. Me pregunto si hay alguna forma de hacer que las comillas traseras se expandan inmediatamente, o pasar el entorno actual a un comando $ (shell).Exportación de variables de entorno al shell Makefile
Por ejemplo, el siguiente archivo MAKE:
SOME_VAR := some_val
export SOME_VAR
VAR1 := `echo $$SOME_VAR`
export VAR1
VAR2 := `echo $$VAR1`
all:
@echo VAR1=$(VAR1)
@echo VAR2=$(VAR2)
seria:
~/tmp/t2> make
VAR1=some_val
VAR2=`echo $SOME_VAR`
donde yo quiero para imprimir "VAR2 = some_val". El ejemplo real es un poco más complicado (las variables de entorno se heredan de los makefiles padre, y estoy tratando de usar un script de Perl para editar las variables), pero el principio es el mismo.
Cualquier ayuda es apreciada.
Hmmm ... sí, mi ejemplo era defectuoso. ..En el ejemplo anterior, VAR1 se expande dentro del Makefile, pero lo que necesito es que VAR1 se expanda dentro del script de shell. Es decir, estoy llamando a un script de Perl que necesita acceder a ENV {'VAR1'}. Si se invoca desde $ (shell ...) el script no tendrá conocimiento de qué es VAR1. Voy a editar mi pregunta con un mejor ejemplo. Gracias. – John
@John, realmente no puedo entender lo que estás tratando de hacer aquí. Podría hacer algunas conjeturas, pero creo que sería más rápido si editaras tu pregunta. – Beta
Lo que realmente estoy tratando de hacer: tengo un archivo MAKE que se supone que construye un archivo de objeto y lo nombra de acuerdo con las configuraciones de configuración con las que fue construido. Tengo un script de Perl que traduce las configuraciones en un nombre. Para que esto funcione, la secuencia de comandos de perl debe tener acceso a la configuración de configuración (tiene que usar las comillas inversas para eso). Esto estaría bien por sí mismo, pero luego el nombre tiene que ser utilizado en otro script de Perl. Debido a que el nombre no se expande cuando se ejecuta el segundo script, causa un error. Estoy buscando una solución. – John