2011-04-27 63 views
0

這是一個GNU Make依賴關係解決問題。使用GNU make和VPATH查找依賴關係時搜索當前目錄

我的問題是,我將源文件從遠程文件服務器複製到臨時磁盤(加速構建過程50%)。如果文件複製失敗,我想使用文件服務器中的源文件,否則我想從暫存盤讀取它們。

我試過使用vpath機制,但問題在於,據我瞭解,make會默認開始尋找當前目錄中的源文件,並且只有當它無法在那裏找到文件時,請查看使用vpath列出的目錄。

在查看當前目錄之前是否可以先查看vpath目錄?或者也許只查看vpath目錄(並顯式地將當前目錄添加到vpath中)?

我唯一能想到的方式就是臨時更改目錄,以便始終無法找到源文件。

+0

是否有一個特殊的原因,你必須允許不受信任的源文件版本駐留在當前目錄? – Beta 2011-04-27 16:29:13

+0

這兩個目錄中的源文件是相同的,但由於更好的性能(構建需要幾個小時),我想使用暫存盤上的副本。 – dala 2011-04-27 16:40:11

+0

我明白,但我不明白它與我的問題有什麼關係。當前目錄中是否有源文件? – Beta 2011-04-27 16:52:14

回答

0

查看服務器上源目錄的路徑。假設它是「/ server/someplace/src /」。假設你在當前目錄中沒有「src」目錄(如果你這樣做,我們只需要調整這個方法)。只要確保暫存盤上源目錄的路徑以「/ src /」結尾,如「/ scratch/wednesday/src /」。那麼你可以這樣做:

SCRATCH_PATH = /scratch/wednesday/ 
SERVER_PATH = /server/someplace/ 

VPATH = $(SCRATCH_PATH) $(SERVER_PATH) 

%.o: src/%.cc 
    $(CC) blah blah blah