2016-11-28 49 views
1

我想在makefile中的if條件中進行最簡單的比較。 我正在使用cygwin。我不斷收到錯誤XX was unexpected at this time。其中XX是比較運算符的LHS。這個確切的makefile運行在mks上,但現在我必須使用cygwin,因爲我現在正在64位窗口上運行它。測試如果條件makefile上的cygwin

這裏是我的代碼:

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

Shell語句在結尾處需要';'。 –

+0

@πάνταῥεῖ它沒有工作 –

+0

你可能想解釋你想要做什麼,而不是你的嘗試解決方案。參見[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – user657267

回答

1

您需要兩個;。如果沒有最後一個分號,fiecho的參數。它適用於:Linux上的GNU Make 4.0 debian 3.16.0-4-amd64。

注意:使用舊版本的GNU Make時可能會有問題。

DEBUG=1 

all: 
    if [ $(DEBUG) != 0 ]; then \ 
     echo "not equal to 0" ; \ 
    fi 
+0

我剛剛這樣做,但它仍然無法正常工作。 –

+1

請記住使用製表符而不是空格,我正在使用:GNU Make 4.0並且它可以工作 – Jonas

+0

我在Windows XP上使用製表符和GNU Make版本3.75對cygwin進行操作64位SP2 –