使用 Makefile 条件检查文件是否存在

use*_*658 2 makefile gnu-make

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

我尝试过以下语法,但似乎不起作用:

Path = /usr/local/myFileVer1
ifeq ($(wildcard $(Path)),)  
version = 1
else
version = 2
endif
Run Code Online (Sandbox Code Playgroud)

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

知道我还能尝试什么吗?

Die*_*lla 5

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

File = /usr/local/myFileVer1

ifeq ($(wildcard $(File)),)
all:
    echo 1
else
all:
    echo 2
endif
Run Code Online (Sandbox Code Playgroud)

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

File = /usr/local/myFileVer1

ifeq ($(wildcard $(File)),)
include Makefile1.mk
else
include Makefile2.mk
endif
Run Code Online (Sandbox Code Playgroud)