在我的一个项目中,我面临以下错误。我有两个环境,我正在观察两个环境之间的ifeq
功能差异。
在第一个环境中,以下代码运行正常。
FIRST = 1
ifeq ( ($FIRST),1 )
ENABLE_CODE+= -D'ENABLE_PROGRAM'
endif
相同的代码在第二个环境中不起作用。它只有在我修改代码
时才有效 ifeq ( ($FIRST),1)
到
ifeq ( ( $FIRST),'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)