Makefile变量使用include指令和目标特定变量

时间:2014-08-18 14:03:58

标签: variables makefile include target

这是一个非常简单的测试,我无法理解我错在哪里:

文件Makefile.inc

MSG = I am

myprog: USE_FOO = 1

ifeq ($(USE_FOO), 1)
  MSG += using foo
else
  MSG += not using foo
endif

文件Makefile

include Makefile.inc

all: myprog

myprog:
    @echo "USE_FOO = $(USE_FOO)"
    @echo $(MSG)

我获得了:

$> make
USE_FOO = 1
I am not using foo

请你告诉我,为什么我的信息不是“我正在使用foo”?

1 个答案:

答案 0 :(得分:2)

ifeq未在目标myprog的上下文中进行评估,因此将其评估为false,并将MSG设置为"我不使用foo。"

您可以使用File Makefile.inc

MSG = I am not using foo

myprog: USE_FOO = 1
myprog: MSG=I am using foo