Vérification de la valeur des variables d'environnement dans Makefile

21

J'ai une cible Makefile, dans laquelle je dois vérifier la valeur d'une variable d'environnement. Mais je n'en ai pas la syntaxe exacte. J'ai essayé dur, mais je ne le trouve pas. Toute aide est appréciée.

Nom de la variable d'environnement: TEST, sa valeur: "TRUE"

test_target: 
    ifeq ($(TEST),"TRUE")
            echo "Do something"
    endif

J'obtiens l'erreur suivante:

/bin/sh: -c: line 0: syntax error near unexpected token `"TRUE","TRUE"'
/bin/sh: -c: line 0: `ifeq ("TRUE","TRUE")'
Ashwin Tumma
la source

Réponses:

26

La ifeq()directive doit être dans la colonne 1, supprimer tous les espaces en tête, c.-à-d.

test_target: 
ifeq ($(TEST),"TRUE")
        echo "Do something"
endif

^ aucun espace

gwillie
la source
14

Vous ne devez pas mettre ifeqaprès TAB. Les espaces sont autorisés. Lisez le document GNU Make .

test_target: 
ifeq ($(TEST),"TRUE")
    echo "Do something"
endif

Notez également qu'il compare $(TEST)avec tout "TRUE"comme:

$ make TEST=TRUE
make: Nothing to be done for 'test_target'.

$ make TEST='"TRUE"'
echo "Do something"
Do something
yaegashi
la source
Ce bit était très utile - Notez également qu'il compare $ (TEST) avec "TRUE" tel quel :. Merci
kakoma