Makefile ifeq: quand sont-ils évalués?

La suite est très simple makefile qui ne semble pas fonctionner correctement.

TEST=ON

buildbegin:
ifeq ($(TEST),ON)        
    @echo TEST PASSED
else
    @echo TEST FAILED
endif

Peu importe ce que j'ai mis la variable de TEST, mon ifeq déclaration de passe. Je vois toujours les TEST RÉUSSI. Quelqu'un voit ce que je fais de mal ici?

EDIT:

ok. mon exemple n'était pas tout à fait exacte. Ce que j'ai fait est-ce:

SHELL = /bin/sh

DEFAULT_TARGS:= all  all_debug  
DEBUG_TARGS:= all_debug
ALL_TARGS:= $(DEFAULT_TARGS) $(DEBUG_TARGS)

.PHONY: $(ALL_TARGS)
.PHONY: buildbegin

$(ALL_TARGS): buildbegin

TEST=ON

$(DEBUG_TARGS): TEST=OFF

buildbegin:
    @echo $(TEST)
ifeq ($(TEST),ON)
    @echo PASSED
else
    @echo FAILED
endif

L'exécution de tout faire all_debug en résulte "PASSÉ" en cours d'impression. Si je echo $(TEST) avant que la condition, c'est comme si mes règles sont en train de changer la variable, mais l'ifeq seulement les voit jamais quelle que soit la valeur par défaut est.

Fonctionne pour moi - GNU Make 3.82
hmmm. J'ai 3.81
Fonctionne aussi bien - GNU 3.81
désolé. Mon exemple était entachée d'irrégularités. J'ai posté un montage avec un exemple réel

OriginalL'auteur kalden | 2012-08-16