转自:http://stackoverflow.com/questions/4483313/make-error-for-ifeq-syntax-error-near-unexpected-token
【问题】
ARCH = $(shell getconf LONG_BIT)
all:
make
ifeq ($(ARCH), 64)
cp ../3rd/lib64/libxxx.so ../lib
else
cp ../3rd/lib/libxxx.so ../lib
endif
上面的Makefile在make时报错:
/bin/sh: -c: line 0: syntax error near unexpected token `64,'
/bin/sh: -c: line 0: `ifeq (64, 64)'
【原因】
Makefile中,当 ifeq, else 和 endif 没有缩进时,make会正确识别它们,将其作为分支选择的标识
当 ifeq, else 和 endif 有缩进时,make将它们当做普通的shell script
【解决】
去掉 ifeq, else 和 endif 的缩进,像下面这样
ARCH = $(shell getconf LONG_BIT)
all:
make
ifeq ($(ARCH), 64)
cp ../3rd/lib64/libxxx.so ../lib
else
cp ../3rd/lib/libxxx.so ../lib
endif
本文解决了一个在使用Makefile时遇到的语法错误问题,具体为在使用ifeq指令时出现的意外符号错误。通过去掉指令的缩进,使Makefile能够正确解析并执行逻辑判断。
346

被折叠的 条评论
为什么被折叠?



