以下是一个非常简单的makefile,它似乎不能正常工作。Makefile ifeq:它们何时被评估?
TEST=ON
buildbegin:
ifeq ($(TEST),ON)
@echo TEST PASSED
else
@echo TEST FAILED
endif
无论我将TEST变量设置为什么,我的ifeq语句都会通过。我总是看到TEST PASSED。有人看到我在这里做错了吗?
编辑:
好的。我的例子并不完全准确。我实际上有是这样的:
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
运行的是使所有或使all_debug将导致“合格”进行打印。如果我在条件之前回显$(TEST),看起来好像我的规则正在改变变量,但ifeq只能看到默认值。
对我的作品 - 'GNU让3.82' – plaes 2012-08-16 19:24:43
嗯我这里有3.81 – kalden 2012-08-16 19:26:51
工程,以及 - 。GNU 3.81 – Thor 2012-08-16 19:33:42