2011-10-18 331 views
0

我想在我的makefile中使用setenv變量,但是當我執行make文件時,它給出了setenv:command not found。在makefile中使用setenv

我該如何使用它?

其實我想運行一個shell腳本來設置多個環境變量。

由於列表非常龐大,我沒有選擇,除了使用腳本。我不能手動設置他們像 abcd:=/xx/yy/zz

請建議。

P.S.同樣的命令 setenv xxx yyy在Shell 中工作得很好,當我直接在makefile中使用或使用具有此命令的腳本執行makefile時,它只會失敗。 '

回答

3

爲什麼不使用export命令?

+0

實際上,我有預先編寫的腳本,我曾經在shell上運行,現在我想將它移動到生成文件。有很多地方我使用這個命令,並手動收斂所有的輸出將殺死大量的時間。 – coolcracker

+0

「手動轉換」?爲什麼不用perl單線程來替換它們呢? – siukurnin

2

運行腳本來設置環境變量將無法正常工作shell中運行一個單獨的進程&不會在當前的shell反映。您將需要source shell腳本。您可以根據您的shell使用source.。以下是供參考的示例,其中setvar.sh設置變量& print.sh打印它;在Makefile(mkfile)setvar.sh正在使用來源.

$ cat setvar.sh 

export TEST=ABC 

$ cat print.sh 

echo $TEST 
$ cat mkfile 
test: 
    . ./setvar.sh && ./print.sh 

.SILENT:test 
$ make -f mkfile 
ABC 

include我猜例如,

$ cat mkfile2 
include setvar.sh 
test: 
    ./print.sh 

.SILENT:test 
$ make -f mkfile2 
ABC 

希望能這有助於!

0

我認爲setenv不是sh shell的內置。如果您使用的是使用的默認外殼的GNU Make。在你的情況下,你可能想使用不同的shell,比如bash。您可以通過在makefile中SHELL變量設置爲你想要喜歡這樣做:

SHELL := /usr/bin/bash 

對於GNU的更多信息結帳this部分進行手動。它詳細說明了SHELL變量的不同行爲以及它是如何的,或者不是從shell在不同平臺上調用的shell中繼承的。

編輯:我同意其他海報的含義,你可能沒有設置環境變量的方式,你認爲你應該是和不會使用setenv命令。我只是迴應你的原始問題。要了解GNU Make手冊中的make文件結帳these other sections中的變量。

+0

感謝您的信息..它有助於:) – coolcracker

-1
export MY_VAR := "/package/your_path"