2012-07-04 26 views
4

條件,我需要做這樣的事情:Makefile的「如果」與正則表達式

case `uname -m` in 
i?86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;; 
esac 

但我需要爲特定的目標來完成此makefile中。我還沒有找到一種方法來使用正則表達式來創建if條件。

我嘗試這樣做:

ifeq ($(shell uname -m), i*86) 

但它不工作。 即使

ifeq ($(shell uname -m), i686) 

不起作用。

回答

0
if uname -m | grep -Eq 'i.86' 
then 
    echo 'Yesss!' 
fi 
1

你可以這樣做。只要確保你的case說法是「在一行中」通過轉義行的末尾:

uname -m | grep -E 'i.86' >/dev/null \ 
case $$? in \ 
    0) echo Matches \ 
    ;; \ 
    1) echo No match \ 
    ;; \ 
esac 

另外,還要注意$?實際上是$$?防止make從試圖把它傳遞給解釋之前,將其展開。