在cygwin上的if条件makefile中进行测试
我试图在makefile中的if条件中进行最简单的比较。 我在用cygwin。我不断收到错误在cygwin上的if条件makefile中进行测试,makefile,cygwin,Makefile,Cygwin,我试图在makefile中的if条件中进行最简单的比较。 我在用cygwin。我不断收到错误XX此时是意外的。其中,XX是比较运算符的LHS。这个makefile在mks上运行,但现在我必须使用cygwin,因为我目前正在64位windows上运行它 这是我的密码: DEBUG=0 all: if test $(DEBUG) != 0 then\ echo "not equal to 0"\ fi 我也试过: DEBUG=0 all: if [ $(
XX此时是意外的
。其中,XX
是比较运算符的LHS。这个makefile在mks上运行,但现在我必须使用cygwin,因为我目前正在64位windows上运行它
这是我的密码:
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此时意外出现。***[全部]错误255
====================================================
更新:
我已尝试添加缺少的代码>并使其成为一行@Jonas。建议,但仍然得到相同的问题
一艘班轮:
if [ $(DEBUG) != 0 ] ; then echo "not equal to 0" ; fi
使用分号:
if [ $(DEBUG) != 0 ] ; then \
echo "not equal to 0" ; \
fi
是的,我使用的是制表符而不是空格。我已经把行尾改成了LF
您需要两个代码>。如果没有最后一个分号,则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
Shell语句需要一个代码>在末尾。@πάνταῥεῖ 它不起作用,你可能想解释你正在尝试做什么,而不是你尝试的解决方案是什么。请参阅。我希望脚本运行时没有错误。。我已经说过了,你没有说你最初的问题是什么,你所给出的只是一个在现实世界中毫无用处的小例子。如果您解释您试图解决的问题,可能会得到更好的答案。请记住使用制表符而不是空格,我使用的是:GNU Make 4.0和它工作我使用的是制表符和GNU Make版本3.75,在cygwin上,在Windows XP 64位SP2上,它应该是这样的吗<代码>如果[$(调试)!=0];然后,;回声“不等于0”;fi你能试试bash而不是tcsh吗?GNU 3.75?!?!天哪!那已经超过20岁了!我不知道还有这么旧的二进制文件存在。无论如何,我怀疑您的makefile是使用DOS样式的行尾(CRLF)而不是UNIX样式的行尾(LF)编写的。直到GNU make 3.78(1999年9月发布)之前,make没有对CRLF进行任何特殊处理。