linux有判斷文件是否存在的函數(shù);該函數(shù)為makefile的wildcard函數(shù)。wildcard函數(shù)可以匹配文件列表,若不存在符合指定模式的文件,函數(shù)會(huì)返回空,語法為“$(wildcard PATTERN…)”。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
linux有判斷文件存在的函數(shù)嗎
linux有判斷文件存在的函數(shù)
使用makefile的wildcard函數(shù)
ifneq ($(wildcard FILE,) #文件存在 endif
$(wildcard FILE)的意思是當(dāng)前路徑下的FILE文件匹配的文件展開。
假設(shè)當(dāng)前路徑下存在a.c 和 b.c,那么執(zhí)行src=$(wildcard *.c),src的值就為a.c b.c;
如果不使用通配符,比如src=$(wildcard c.c);那么就是要展開當(dāng)前路徑下,文件名為c.c的文件,因?yàn)楫?dāng)前路徑下文件不存在,因此src為空字符串。
示例如下:
分別使用上述兩種方法判斷obj文件夾下depend.mk文件是否存在,存在的話創(chuàng)建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
執(zhí)行完后,成功創(chuàng)建了a.c和b.c。
推薦學(xué)習(xí):Linux視頻教程