2011-04-27 34 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