2011-04-17 114 views
4

我在將我在Makefile中修改的PATH導出到當前終端時遇到了一些麻煩。 我試圖添加到PATH,無論Makefile目錄在哪裏的bin文件夾。通過Makefile將目錄添加到PATH

這裏的生成文件的相關條:

PATH := $(shell pwd)/bin:$(PATH) 

install: 
    mkdir -p ./bin 
    export PATH 
    echo $(PATH) 

回波打印它正確,但如果我重做回波在終端中,PATH保持相同。

在此先感謝您的幫助。

+0

可能有更好的運氣問在http://unix.stackexchange.com/ – 2011-04-17 20:56:25

+0

感謝您的提示,我會嘗試@蠟筆暴力 – Bruno 2011-04-17 21:02:04

+0

@蠟筆:構建系統明確是一個編程主題,並提出問題--- while可能在unix上可以接受。在堆棧溢出上,*更好*。 – dmckee 2011-04-17 23:32:14

回答

4

如果您使用了GNU make,你需要明確export子流程PATH變量的環境:

export PATH := $(shell pwd)/bin:$(PATH) 

install: 
    mkdir -p ./bin 
    export PATH 
    echo $(PATH) 
+3

他不想將其導出到子流程,而是導出到「超級流程」。 – eriktous 2011-04-18 00:17:26

1

你所要做的是不可能的。 Make運行在另一個進程中,而不是終端中的shell。 make過程中對環境所做的更改不會轉移到shell。

也許你在混淆export聲明的效果。 export不會將變量的值從make過程導出到shell。相反,export標記變量,因此它們將轉移make的任何子進程。據我所知,沒有辦法改變父進程的環境(你開始製作的shell是make進程的父進程)。

也許this答案會使導出變量的子概念更清晰一些。

+1

雖然你說得對,一個'make'進程不能改變其父進程的環境(據我所知),這裏的'export PATH'語句是一個配方的一部分,因此不被視爲'make '語法,但作爲shell語法在子shell中執行。 – eriktous 2011-04-18 00:04:04

相關問題