使用Makefile条件检查文件存在

时间:2014-04-23 13:08:42

标签: makefile gnu-make

我正在尝试使用Makefile条件检查文件是否存在。

我尝试了以下似乎不起作用的语法:

Path = /usr/local/myFileVer1
ifeq ($(wildcard $(Path)),)  
version = 1
else
version = 2
endif

我认为如果文件不存在,那么通配符语句将计算为空字符串,因此它将落入else语句中。那种情况没有发生。

知道我还能尝试什么吗?

2 个答案:

答案 0 :(得分:1)

Make与所有UNIX实用程序一样,区分大小写。 PATHPath不同。

此外,您不应该设置变量PATH,因为这会在调用命令时更改PATH,然后您的食谱将全部失败。

答案 1 :(得分:1)

您接近语法。你可以尝试这样的事情:

File = /usr/local/myFileVer1

ifeq ($(wildcard $(File)),)
all:
    echo 1
else
all:
    echo 2
endif

或者更好的是,您可以编写两个单独的makefile并将它们包含在正确的位置:

File = /usr/local/myFileVer1

ifeq ($(wildcard $(File)),)
include Makefile1.mk
else
include Makefile2.mk
endif