web-dev-qa-db-fra.com

Makefile ifeq ET logique

Je voudrais vérifier plusieurs conditions dans une boucle if de GNU make file. Voici un exemple:

ifeq ($(TEST_FLAG),TRUE && ($(DEBUG_FLAG),FALSE))
true statement 
else 
false statement
endif

Quelle est la bonne façon de procéder?

31
Arun Kumar

Vous pouvez utiliser ifeq avec une concaténation de vos valeurs, par exemple.

ifeq ($(TEST_FLAG)$(DEBUG_FLAG),TRUEFALSE)
   do something
endif

Il est également possible d'utiliser les fonctions conditionnelles, qui sont plus susceptibles d'être utiles dans une boucle (comme ifeq ne fera probablement pas ce que vous attendez dans une boucle, il sera testé exactement une fois).

27
Hasturkun

Bien que la solution d'Hasturkun fonctionne, je pense que la façon idiomatique d'écrire ceci est:

ifeq ($(TEST_FLAG),TRUE)
ifeq ($(DEBUG_FLAG),FALSE)
# Stuff
endif
endif
25
Jack Kelly