如何检查Makefile中目录是否不存在?如果[!-d ...]始终返回true

陈金

我想添加几行,以便在某些目录(由Makefile变量DIR1设置)不存在的情况下,make处理过程可能出错。这是添加的部分,但是即使存在DIR1设置的目录,也会出现此错误。例如,我创建了名为“ dir1”的目录,但出错了。怎么了?

DIR1 = dir1

.PHONY : check_dir

$(info DIR1 = $(DIR1))

check_dir:  
    if [ ! -d $(DIR1) ]; then \
        $(error "DIR1 does not exist! check Makefile!"); \
    fi

这是运行结果。(我的目录dir1在当前目录中被调用)。

> ckim@chan-ubuntu:~/testmake/test1$ make  
> DIR1 = dir1 Makefile:8:
> *** "DIR1 does not exist! check Makefile!".  Stop.
雷诺·帕卡莱特

$(error ...)有系统地化妆传递配方前壳扩大。因此,每次运行此配方时都会引发错误,而与shellif语句的结果无关

仅使用壳结构:

check_dir:  
    if [ ! -d "$(DIR1)" ]; then \
        echo "$(DIR1) does not exist! check Makefile!"; \
        exit 1; \
    fi

或者(稍微紧凑一点,如果不容易理解的话):

MESSAGE := $(DIR1) does not exist! check Makefile!
check_dir:  
    @[ -d "$(DIR1)" ] || { echo "$(MESSAGE)"; exit 1; }

还有其他可能性,例如:

check_dir: $(DIR1)

$(DIR1):
    $(error $(DIR1) does not exist! check Makefile!)

但是,这在命名文件$(DIR1)和目录之间没有区别

注意:如果要在make解析Makefile并发现目录不存在时引发错误,则可以使用该shell函数和make条件:

OK := $(shell if [ -d $(DIR1) ]; then echo "ok"; fi)

ifeq ($(OK),)
$(error $(DIR1) does not exist! check Makefile!)
endif

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果语句始终返回true?

如何检查元素是否存在于 xpath 中,如果不存在则返回空/无值?

如果语句在Django中始终返回true

检查本地图像是否存在,始终返回true

如果语句始终返回 true c#

检查在线连接始终返回True

字符检查文件始终返回true

如何使if语句始终为Rspec返回true?

无论输入如何,函数始终返回true

While循环在Java中始终返回true

TryValidateProperty在测试库中始终返回true

PHP检查数据库中的行是否存在始终返回true

在Firestore中检查字符串始终返回true

由于DocumentFile()。fromTreeUri(),尚不存在的路径上的DocumentFile.exists()始终返回true

如果OpenStruct中不存在键,如何返回nil?

如何使read -d返回true

如何使Python对象在相等性测试中始终返回true?

Mongo查询始终返回数据库中存在的值,如果不存在

Random.nextBoolean()始终返回True,无论种子如何

如何确保存储的函数始终返回TRUE或FALSE?

如何手动构建将始终返回true的Expression?

IDA Pro:如何修改函数以始终返回 true?

asp.net中的Page_ClientValidate始终返回true

Promise中的比较表达式始终返回true

在C#中从C ++ .DLL加载值始终返回true

yii2保存,检查是否存在,如果是,则返回ID,如果不存在,则创建(并返回ID)

(Python,Neo4j-driver)-当检查节点是否不存在时如何不返回

我正在尝试从类中的布尔值返回字符串,并始终返回true

检查表项是否不存在。如何检查返回的“ Items”数组是否为空?Javascript / DynamoDB