以下是一个非常简单的 makefile,似乎无法正常工作。
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_debug 将导致打印“PASSED”。如果我在条件之前回显 $(TEST),看起来好像我的规则正在更改变量,但 ifeq 只看到默认值是什么。