Pergunta

Eu quero detectar uma condição no meu makefile onde a ferramenta é a versão errada e forçar a fazer a falhar com uma mensagem de erro indicando que o item não é a versão correta.

Alguém pode dar um exemplo de fazer isso?

Eu tentei o seguinte mas não é a sintaxe correta:

ifeq "$(shell svnversion --version | sed s/[^0-9\.]*://)" "1.4"
$error("Bad svnversion v1.4, please install v1.6")
endif

Graças.

Foi útil?

Solução

A partir da manual:

$(error Bad svn version v1.4, please install v1.6)

Isto irá resultar make a um erro fatal:

$ make
Makefile:2: *** Bad svn version v1.4, please install v1.6.  Stop.

Outras dicas

Enquanto $ (erro ... obras, às vezes é mais fácil de usar uma regra que não

test_svn_version:
        @if [ $$(svn --version --quiet | \
                perl -ne '@a=split(/\./); \
                          print $$a[0]*10000 + $$a[1]*100 + $$a[2]') \
              -lt 10600 ]; \
        then \
            echo >&2 "Svn version $$(svn --version --quiet) too old; upgrade to v1.6";
            false; \
        fi

Então você faz test_svn_version um pré-requisito de seu alvo nível superior.

As necessidades condicionais alguma atenção também.

ifeq ($(shell svnversion --version | sed s/[^0-9\.]*://), 1.4) 
    $(error Bad svnversion v1.4, please install v1.6)
endif 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top