¿Cómo se obtienen las variables desde la línea de command mientras se está ejecutando makefile?

Tal como en script bash: lee -p "Only UI (y / n)" Temp_Answer. ¿Es posible hacer esto mientras se está ejecutando Makefile? Porque quiero hacer una base diferente en $ Temp_Answer (S o N) en Makefile.

Solutions Collecting From Web of "¿Cómo se obtienen las variables desde la línea de command mientras se está ejecutando makefile?"

Accediendo a variables de shell

Todas las variables de entorno de shell exportadas son accesibles de esta forma:

$(MYBASEDIR) 

Ejemplo

Digamos que tengo este Makefile .

 $ cat Makefile all: @echo $(FOO) 

Ahora sin ninguna variable configurada, gran sorpresa, no obtenemos nada:

 $ printenv | grep FOO $ $ make $ 

Con la variable simplemente establecida, pero no exportada:

 $ FOO=bar $ printenv |grep FOO FOO=bar $ export -p | grep FOO $ $ make $ 

Ahora con un varible exportado:

 $ export FOO $ export -p | grep FOO declare -x FOO="bar" $ make bar 

Lectura de input del usuario

Claro que puede leer la input del usuario dentro de un Makefile. Aquí hay un ejemplo.

 all: @echo "Text from env. var.: $(FOO)" @echo "" @while [ -z "$$CONTINUE" ]; do \ read -r -p "Type anything but Y or y to exit. [y/N]: " CONTINUE; \ done ; \ [ $$CONTINUE = "y" ] || [ $$CONTINUE = "Y" ] || (echo "Exiting."; exit 1;) @echo "..do more.." 

Con esto en su lugar, ahora puede continuar o detener el Makefile :

Ejemplo

Al presionar y continuará:

 $ make Text from env. var.: bar Type anything but Y or y to exit. [y/N]: y ..do more.. $ 

Al presionar cualquier otra cosa como n lo detendrá:

 $ make Text from env. var.: bar Type anything but Y or y to exit. [y/N]: n Exiting. make: *** [all] Error 1 

Referencias

  • Lo Básico: Obtener variables de entorno en GNU Make
  • Linux / Unix: Bash Shell Ver todas las variables y funciones exportadas
  • ¿Cómo solicitar una variable Makefile específica del objective si no está definida?