Makefile字符串比较#Ifeq

Makefile字符串比较#Ifeq,makefile,Makefile,在我的一个项目中,我面临以下错误。我有两个环境,我正在观察两个环境之间的ifeq功能差异 在第一个环境中,下面的代码运行良好 FIRST = 1 ifeq ( ($FIRST),1 ) ENABLE_CODE+= -D'ENABLE_PROGRAM' endif 相同的代码在第二个环境中不起作用。它只有在我修改代码时才起作用 ifeq ( ($FIRST),1) 到 有人能帮我把这件事整理一下吗?正如评论中所说的,你应该把首先用引号括起来:`$(首先)。注意,Makefile和B

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

在第一个环境中,下面的代码运行良好

FIRST = 1

ifeq ( ($FIRST),1 ) 

 ENABLE_CODE+= -D'ENABLE_PROGRAM'

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

 ifeq ( ($FIRST),1)


有人能帮我把这件事整理一下吗?

正如评论中所说的,你应该把
首先
用引号括起来:`$(首先)。注意,Makefile和Bash具有不同的语法。Makefile需要在变量bash-not周围加上四舍五入引号

另外,请删除
ifeq
中的额外空格。注意:在某些情况下,命令
ifeq($(第一),1)
可能会与非管道行进行比较,并且由于额外的空格而失败:它可能会与
'1'
进行比较,而不是简单的
'1'

所以makefile看起来像

FIRST = 1

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

all:
        @echo FIRST $(FIRST)
        @echo ENABLE_CODE $(ENABLE_CODE)
不应该是$(第一个)吗?您使用的是哪个版本的Make?
FIRST = 1

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

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