2010-04-30 128 views
45

變量返回MINGW32_NT-5.1CYGWIN_NT-5.1.(酵母,點末)的Makefile:包含字符串

需要比較,鑑於變種包含NT-5.1的任何位置。

使用cygwin,並希望與幾乎任何* nix兼容。

回答

75

findstring功能是你的心臟的慾望是什麼:

$(findstring找到,)

搜索發生找到。如果發生,值爲找到;否則,該值爲空。您可以在條件中使用此函數來測試給定字符串中是否存在特定的子字符串。因此,兩個實施例中,

$(findstring a,a b c) 
$(findstring a,b c) 

分別產生值"a"""(空字符串)。參見Testing Flags,實際應用findstring

喜歡的東西:

ifneq (,$(findstring NT-5.1,$(VARIABLE))) 
    # Found 
else 
    # Not found 
endif 
+1

大,正是我想要的。只有一個問題:ifneq(,$(...' – Pablo 2010-04-30 01:17:05

+3

)解析爲'ifneq(A,B)',其中A是空字符串,B是$(findstring ...)它看起來很奇怪,因爲你在Makefiles中沒有引用字符串 – 2010-04-30 11:41:20

+1

'findstring'區分大小寫嗎?如果是這樣,是否有一個簡單的方法來區分大小寫匹配?手冊不清晰... – 2014-02-16 17:45:49

11
VARIABLE=NT-5.1_Can_be_any_string 
ifeq ($(findstring NT-5.1,$(VARIABLE)),NT-5.1) 
    # Found 
    RESULT=found 
else 
    # Not found 
    RESULT=notfound 
endif 

all: 
    @echo "RESULT=${RESULT} , output=$(findstring NT-5.1,$(VARIABLE))" 

它給定的字符串相匹配,並返回

+4

This works並閱讀比接受的答案更好,國際海事組織。 – 2016-08-16 20:21:22