Makefile ifeq :когда они оцениваются?

Ниже приведен очень простой make-файл, который, похоже, не работает должным образом.

TEST=ON

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

Независимо от того, что я установил для переменной TEST, мой оператор ifeq проходит. Я всегда вижу ТЕСТ ПРОШЕЛ. Кто-нибудь видит, что я делаю неправильно здесь?

РЕДАКТИРОВАТЬ:

в порядке. мой пример был не совсем точен. На самом деле у меня есть вот это:

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

Запуск отладки make all или make all _приведет к выводу «PASSED». Если я вывожу $ (TEST )перед условием, это выглядит так, как будто мои правила изменяют переменную, но ifeq всегда видит только то, что имеет значение по умолчанию.

14
задан Jack Kelly 17 August 2012 в 06:26
поделиться