El siguiente es un archivo MAKE muy simple que no parece funcionar correctamente.Makefile ifeq: ¿cuándo se evalúan?
TEST=ON
buildbegin:
ifeq ($(TEST),ON)
@echo TEST PASSED
else
@echo TEST FAILED
endif
No importa a qué establezca la variable TEST, mi sentencia ifeq es aprobada. Siempre veo TEST PASSED. ¿Alguien ve lo que estoy haciendo mal aquí?
EDITAR:
ok. mi ejemplo no era exactamente exacto. Lo que realmente tengo es la siguiente:
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
Correr o bien hacer todo o hacer all_debug dará lugar a "pasado" que se está imprimiendo. Si echo $ (PRUEBA) antes de la condición, parece que mis reglas están cambiando la variable, pero el ifeq solo ve el valor predeterminado.
funciona para mí -. 'GNU Make 3.82' – plaes
hmmm tengo 3,81 – kalden
trabaja aquí también -.. GNU 3,81 – Thor