在cygwin上的if条件makefile中进行测试

在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 [ $(

我试图在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 [ $(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