小编kal*_*den的帖子

Makefile ifeq:它们何时被评估?

以下是一个非常简单的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只能看到默认值.

makefile gnu-make

14
推荐指数
1
解决办法
3万
查看次数

标签 统计

gnu-make ×1

makefile ×1