2013-06-12 13 views
6

當使用b uilt-in $(error text) and $(warning text) functions of GNU Make時,如何在沒有雜技的情況下將斷線輸入錯誤/警告輸出?如何合成GNU中的換行符做出警告或錯誤?

通過雜技我的意思是有趣的方法,因爲這兩個:

$(warning $(shell /bin/echo -e "something\nfoo\nbar\nbaz")) 
$(warning $(shell /bin/bash -c 'echo -e "something\nfoo\nbar\nbaz"')) 

其中,順便說一句,並沒有爲我用GNU工作在Ubuntu 10.04製作3.81。

理由:我想在我的GNUmakefile更具可讀性條件的部分(ifeqifneq)錯誤輸出。


對我來說,目前的解決方法是使用每一行:

$(warning ...) 

終於最後一行:

$(error ...) 
+0

'make'和空格不是很好的朋友,我很害怕。 –

回答

13

使用定義定義一個換行符變量/ endef和使用它作爲$ n像這樣:

define n 


endef 

$(warning "something$nfoo$nbar$nbaz") 

請注意define和endef之間的兩條空白行

+0

這兩個工作,大概是因爲它是一個單一的字符?!謝謝,這正是我所期待的。 – 0xC0000022L

+0

不客氣。如果它是nl而不是n,它必須是$(nl)或$ {nl}以防止被視爲$ {n} l。在Gnu make中,單字母變量名不會遇到這個問題。 –

+0

是的想通了。感謝您的迅速回答。系統讓我儘快接受。 – 0xC0000022L