转自: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