2014-02-06 26 views
1

如何在配方中使用多行變量?如何使用多行變量

文件名:多行變量

define foo = 
echo welcome 
endef 

export foo 

all: 
    echo $(foo) 

我得到下面的輸出。但我期望'歡迎'打印。

$ make -f multiple-line-variable 
echo 

回答

1

SunEric的答案沒有正確地解釋發生了什麼事。添加或不添加@完全與你沒有看到「歡迎」打印的原因無關。

你最初的例子沒有按預期工作的原因是因爲你正在閱讀最新版本的GNU make(目前GNU make 4.0)的GNU make手冊,可能使用在線手冊,但你使用更老版本的GNU make。這不是一個好主意,因爲本手冊中討論的功能在您使用的GNU版本中不存在。

在這種情況下,變量定義的,這個名字後加賦值操作符的樣式:

define foo = 
    ... 

不可用GNU使3.82之前。在make之前的版本中,該語法定義了一個名稱爲字面上的變量foo =。因此,打印$(foo)將不會顯示任何內容,因爲未定義變量foo

GNU make提供其用戶手冊作爲發行版的一部分:您應該始終閱讀使用的GNU版本附帶的手冊版本,而不是其他版本。

而且,你不需要exportfoo變量兩種方法,因爲你使用的使你的食譜語法,這樣的外殼永遠不會看到一個foo變量的任何引用。

0

試試這個,

​​
+0

$ make -f多行變量 多行變量:6:***缺少分隔符。停止。 –

+0

我敢打賭,你錯過了第6行回顯之前的「tab」空格。 –