Entendendo um script makefile para Linux

2

Estou usando o fpgalink fx2 para construir em uma máquina Windows. Aqui está makefile, qual é o significado do seguinte script:

BRANCH := $(shell TRY=$(CURDIR)
BRANCH=dev
while [ "$${TRY}" != "$(ROOT)" -a "$${TRY}" != "/" ]; do
    if [ -e "$${TRY}/.branch" ]; then
        BRANCH=$$(cat "$${TRY}/.branch") 
        break
    fi
    TRY=$$(dirname $${TRY})
done
echo $${BRANCH})
    
por vport 28.07.2016 / 07:23

1 resposta

1

Este fragmento do GNU Makefile está definindo o valor da variável BRANCH Makefile.

Ele faz isso invocando um script de shell curto, codificado em linha no Makefile.

O script de shell tenta localizar um arquivo chamado .branch no diretório atual. Se esse arquivo não for encontrado, ele tentará encontrá-lo no diretório acima, e assim por diante até atingir o diretório raiz ( / ) ou atingir o diretório fornecido pelo valor da variável Makefile ROOT .

Caso encontre o arquivo, o conteúdo do arquivo será usado para definir o valor de BRANCH (e o loop termina). Se não encontrar um arquivo .branch em qualquer lugar, a variável BRANCH será definida para o valor dev .

    
por 28.07.2016 / 10:34