web-dev-qa-db-fra.com

Comment forcer une erreur dans un fichier gnumake

Je veux détecter une condition dans mon makefile où un outil est la mauvaise version et forcer la fabrication à échouer avec un message d'erreur indiquant que l'élément n'est pas la bonne version.

Quelqu'un peut-il donner un exemple de cela?

J'ai essayé ce qui suit mais ce n'est pas la bonne syntaxe:

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

Merci.

56
WilliamKF

Depuis le manuel :

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

Cela entraînera make une erreur fatale:

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

Bien que $ (erreur ... fonctionne, il est parfois plus facile d'utiliser une règle qui échoue

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

Ensuite, vous faites de test_svn_version une condition préalable à votre cible de niveau supérieur.

8
Chris Dodd

Le conditionnel a aussi besoin d'attention.

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