makefile中判断文件是否存在的几种方法

 有两种方式:

1、调用shell命令

if [ -e  FILE ]; then .......; fi

注:文件表达式
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真 
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真 
-w filename 如果 filename可写,则为真 
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真

2、使用makefile的wildcard函数

ifneq ($(wildcard FILE,)
    #文件存在
endif

$(wildcard FILE)的意思是当前路径下的FILE文件匹配的文件展开。
假设当前路径下存在a.c 和 b.c,那么执行src=$(wildcard *.c),src的值就为a.c b.c;
如果不使用通配符,比如src=$(wildcard c.c);那么就是要展开当前路径下,文件名为c.c的文件,因为当前路径下文件不存在,因此src为空字符串

 

实例1:

分别使用上述两种方法判断obj文件夹下depend.mk文件是否存在,存在的话创建a.c和b.c文件。

编写的makefile如下:

OBJ_DIR=obj
fileNames = $(wildcard $(OBJ_DIR)/depend.mk)

all:
	@echo "this is all "
	@echo ${fileNames}
	@if [ -e $(OBJ_DIR)/depend.mk ]; then touch b.c; fi


ifneq ($(wildcard $(OBJ_DIR)/depend.mk),)
	touch a.c
endif

执行完后,成功创建了a.c和b.c。

 

 

ref:

https://cloud.tencent.com/developer/ask/62106

https://blog.youkuaiyun.com/scm002/article/details/84213758

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值