Makefile字符串比较#Ifeq

时间:2016-10-10 09:58:31

标签: makefile

在我的一个项目中,我面临以下错误。我有两个环境,我正在观察两个环境之间的ifeq功能差异。

在第一个环境中,以下代码运行正常。

FIRST = 1

ifeq ( ($FIRST),1 ) 

 ENABLE_CODE+= -D'ENABLE_PROGRAM'

endif

相同的代码在第二个环境中不起作用。它只有在我修改代码

时才有效
 ifeq ( ($FIRST),1)

 ifeq ( ( $FIRST),'1')

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

正如评论中所说,你应该将FIRST包装成引号:`$(FIRST)。注意,Makefile和Bash有不同的语法。 Makefile需要围绕变量的圆引号,bash - 不是。

另请删除ifeq内的额外空格。请注意,在某些情况下,命令ifeq ( $(FIRST),1 )可能会与无条件行进行比较,并因为额外的空格而失败:它可能与'1 '相比而不是简单'1'

所以makefile看起来像

FIRST = 1

ifeq ($(FIRST),1)
   ENABLE_CODE += -D'ENABLE_PROGRAM'
endif

all:
        @echo FIRST $(FIRST)
        @echo ENABLE_CODE $(ENABLE_CODE)