我试图在makefile中的if条件下进行最简单的比较。
我正在使用cygwin。我一直收到错误 XX was unexpected at this time
。其中XX
是比较运算符的LHS。这个确切的makefile在mks上运行,但现在我必须使用cygwin,因为我现在在64位窗口上运行它。
这是我的代码:
DEBUG=0
all:
if test $(DEBUG) != 0 then\
echo "not equal to 0"\
fi
我也试过这个:
DEBUG=0
all:
if [ $(DEBUG) != 0 ] then\
echo "not equal to 0"\
fi
和此:
DEBUG=0
all:
if [ "$(DEBUG)" != "0" ] then\
echo "not equal to 0"\
fi
这是错误:
0 was unexpected at this time. *** [all] Error 255
=============================================== ===== 更新:
我尝试添加缺少的;
,并将其作为@Jonas的单行。建议但仍然遇到同样的问题。
一个班轮:
if [ $(DEBUG) != 0 ] ; then echo "not equal to 0" ; fi
用分号:
if [ $(DEBUG) != 0 ] ; then \
echo "not equal to 0" ; \
fi
是的,我使用制表符而不是空格。我已将行结尾更改为LF
。
答案 0 :(得分:1)
您需要两个;
。如果没有最后一个分号,则fi
是echo
的参数。它适用于:Linux debian 3.16.0-4-amd64上的GNU Make 4.0。
注意:使用旧版GNU Make时可能会出现问题。
DEBUG=1
all:
if [ $(DEBUG) != 0 ]; then \
echo "not equal to 0" ; \
fi