在cygwin

时间:2016-11-28 07:55:48

标签: makefile cygwin

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

1 个答案:

答案 0 :(得分:1)

您需要两个;。如果没有最后一个分号,则fiecho的参数。它适用于: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