以下是一个非常简单的makefile,似乎无法正常工作.
TEST=ON
buildbegin:
ifeq ($(TEST),ON)
@echo TEST PASSED
else
@echo TEST FAILED
endif
Run Code Online (Sandbox Code Playgroud)
无论我将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
Run Code Online (Sandbox Code Playgroud)
运行make all或make all_debug将导致打印"PASSED".如果我在条件之前回显$(TEST),看起来我的规则正在改变变量,但ifeq只能看到默认值.