Eu tenho um Makefile que tem uma variável que precisa ter um valor padrão caso a variável esteja desmarcada ou se definida mas tenha valor nulo.
Como posso conseguir isso?
Eu preciso disso, pois invoco o make dentro de um script de shell e o valor exigido pelo makefile pode ser passado do shell como $ 1. E para passar isso para o makefile eu tenho que configurá-lo dentro do script bash.
Ideias: (Não é elegante) Dentro do script bash a variável pode ser verificada se está definida, mas tem valor nulo, nesse caso pode ser desmarcada.
Trechos
Nota: o seguinte não funcionará se a variável não estiver definida no terminal, pois está definida no script bash.
Makefile
dSourceP?=$(shell pwd)
Source?=$(notdir $(wildcard $(dSourceP)/*.md))
Script Bash
make all dSourceP="${1}" Source="${2}"
terminal
bash ./MyScript.sh
bash ./MyScript.sh /home/nikhil/MyDocs
bash ./MyScript.sh /home/nikhil/MyDocs index.md
Como você está usando GNU
make
, você pode usar o?=
operador :mas isso não lida com valores nulos (ou melhor, vazios) pré-existentes. O seguinte lida com valores ausentes e vazios:
(Certifique-se de que a linha 6 comece com uma tabulação real.)
Você chamaria isso usando
para definir um valor.
make
oumake FOO=
terminará definindoFOO
comobar
; você precisaoverride
substituir as variáveis definidas na linha de comando .