2012-07-08 53 views
0

我正在嘗試在makefile中使用變量,並且似乎無法一致使用它們。如何爲makefile指定變量

下面的代碼(文件silly2.mak):

SUBS = src 
SSUBS=/src2 
SHELL=/bin/sh 

silly5: 
    echo '<<<' $$SUBS '--' $$SSUBS '--' $$SHELL '>>>' 

當與運行:

[email protected]:/usr/local/hsfsys$ make -f silly2.mak silly5 

提供了以下的輸出:

echo '<<<' $SUBS '--' $SSUBS '--' $SHELL '>>>' 
<<< -- -- /bin/bash >>> 

爲什麼 'SHELL'似乎比我的其他變量更好?這是一種保留字嗎?我嘗試過移動變量順序並查看在線文檔,但仍不明白爲什麼echo會提取SHELL的值,但不能提供SUBS或SSUBS的值。

回答

0

試試這個

SUBS = src 
SSUBS=/src2 
SHELL=/bin/sh 

all: 
    echo '<<<' $(SUBS) '--' $(SSUBS) '--' $(SHELL) '>>>' 
+0

謝謝,這個工作。看起來很奇怪的是,SHELL在閱讀方面應該更強大,據我猜測,如果有疑問,我會用括號作爲安全設備 – user1245262 2012-07-08 05:10:08

+1

@ user1245262,我認爲你仍然是誤解。 'make' * always *需要括號用於變量擴展。 '$$ SHELL'似乎起作用的原因是'SHELL'在shell中被定義,並且你逃脫了'$'所以所有的變量都被傳入了shell,所以* it *會擴展它們。由於'SUBS'和'SSUBS'不存在於shell中,因此不起作用。 – 2012-07-08 05:17:07

+0

@CarlNorum - 謝謝。現在差異是有道理的。 – user1245262 2012-07-08 05:19:30