2011-03-25 50 views
2

我試圖在GNU make中使用if函數(而不是其中一個條件語句),以便在列表中添加一個單詞,如果特定變量不是定義了。我已經結束了這樣做的辦法是離開的第二個參數的空白,同時提供了第三個參數,就像這樣:「否定」makefile中的變量

FOO := baz $(if $(BAR),,quux) 

認爲這工作不錯,但在我看來是有點傻。有沒有什麼簡單的內置方式可以做我想做的事?我可以定義我自己的not功能,但是

FOO := baz $(if $(call not,$BAR),quux) 

對我的意見沒有太大的改進。

+2

停止發現它傻了兩個例子甚至醜陋? – reinierpost 2011-03-25 16:34:51

回答

3

我會走這條路:

ifndef BAR 
FOO +=quux 
endif 

,或者空字符串的意思是 「沒有定義」,然後:

ifeq ($(BAR),) 
FOO +=quux 
endif 
1

按照docs

第一參數,條件,第一個 具有全部前後 whitespace str ipped,然後擴大。 如果它擴展爲任何非空字符串,則 則認爲條件爲 爲真。如果它擴展爲空的 字符串,則認爲該條件爲 爲假。

所以問題是你將如何讓一個定義變量給一個空字符串和一個非定義變量給一個非空字符串。

例如,你可以使用filter functionorigin function$(if $(filter undefined,$(origin BAR)),quux))相結合做到這一點,但是這不是你提供^ _^