Makefile 使用GNU make和VPATH查找依赖项时,最后搜索当前目录

Makefile 使用GNU make和VPATH查找依赖项时,最后搜索当前目录,makefile,vpath,Makefile,Vpath,这是一个GNU Make依赖项解决问题 我的问题是,我将源文件从远程文件服务器复制到一个临时磁盘,这将使构建过程加快50%。如果文件复制失败,我想使用文件服务器中的源文件,否则我想从临时磁盘读取它们 我曾尝试使用vpath机制,但问题是,据我所知,make将在默认情况下开始在当前目录中查找源文件,并且只有在找不到该目录中的文件时,才查找与vpath一起列出的目录 在查看当前目录之前,是否可以先查看vpath目录?或者只查看vpath目录,并显式动态地将当前目录添加到vpath 我能想到的唯一方法

这是一个GNU Make依赖项解决问题

我的问题是,我将源文件从远程文件服务器复制到一个临时磁盘,这将使构建过程加快50%。如果文件复制失败,我想使用文件服务器中的源文件,否则我想从临时磁盘读取它们

我曾尝试使用vpath机制,但问题是,据我所知,make将在默认情况下开始在当前目录中查找源文件,并且只有在找不到该目录中的文件时,才查找与vpath一起列出的目录

在查看当前目录之前,是否可以先查看vpath目录?或者只查看vpath目录,并显式动态地将当前目录添加到vpath


我能想到的唯一方法是临时更改目录,这样make always将无法找到源文件。

查看服务器上源目录的路径。假设它是/server/someplace/src/。假设当前目录中没有src目录,如果有,我们只需要调整这个方法。只需确保临时磁盘上源目录的路径以/src/结尾,例如/scratch/周三/src/。然后你可以这样做:

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

VPATH = $(SCRATCH_PATH) $(SERVER_PATH)

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

是否有特殊原因必须允许源文件的不受信任版本驻留在当前目录中?源文件在两个目录中是相同的,但由于性能更好,我想使用临时磁盘上的副本。构建需要几个小时。我理解这一点,但我不明白这与我的问题有什么关系。当前目录中是否有任何源文件?