Makefile: valor padrão da variável definida, mas com valor nulo

1

Eu tenho um Makefile que tem uma variável que precisa ter um valor padrão no caso quando a variável não está definida ou se está definida, mas tem valor nulo.

Como posso conseguir isso?

Eu preciso disso, como invoco make dentro de um script de shell e o valor requerido pelo makefile pode ser passado do shell como $ 1. E para passar isso para makefile eu tenho que colocar dentro do script bash.

Idéias: (Não é elegante) Dentro do script bash, a variável pode ser verificada se estiver definida, mas tem valor nulo; nesse caso, ela pode ser cancelada.

Snippets

Nota: o seguinte não funcionará se a variável não estiver definida no terminal, como eles estão definidos 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
    
por Nikhil 21.09.2018 / 11:38

1 resposta

1

Como você está usando o GNU make , você pode usar o ?= operador :

FOO ?= bar

mas isso não lida com valores nulos (ou vazios) preexistentes. O seguinte lida com valores ausentes e vazios:

ifndef FOO
override FOO = bar
endif

test:
    echo "$(FOO)"

.PHONY: test

(Certifique-se de que a linha 6 comece com uma guia real.)

Você chamaria isso usando

make FOO=blah

para definir um valor. make ou make FOO= terminará definindo FOO para bar ; você precisa de override para sobrescrever as variáveis definidas na linha de comando .

    
por 21.09.2018 / 11:51