Acessando variáveis do shell
Todas as variáveis de ambiente de shell exportadas são acessíveis da seguinte forma:
$(MYBASEDIR)
Exemplo
Digamos que eu tenha esse Makefile
.
$ cat Makefile
all:
@echo $(FOO)
Agora sem set de variáveis, grande surpresa, não conseguimos nada:
$ printenv | grep FOO
$
$ make
$
Com a variável apenas definida, mas não exportada:
$ FOO=bar
$ printenv |grep FOO
FOO=bar
$ export -p | grep FOO
$
$ make
$
Agora, com uma variável exportada:
$ export FOO
$ export -p | grep FOO
declare -x FOO="bar"
$ make
bar
Leitura de entrada do usuário
Claro que você pode ler a entrada do usuário dentro de um Makefile. Aqui está um exemplo.
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.."
Com isso, você pode continuar ou interromper o Makefile
:
Exemplo
Pressionar y
continuará:
$ make
Text from env. var.: bar
Type anything but Y or y to exit. [y/N]: y
..do more..
$
Pressionar qualquer outra coisa, como n
, parará:
$ make
Text from env. var.: bar
Type anything but Y or y to exit. [y/N]: n
Exiting.
make: *** [all] Error 1