1.makefile判断文件是否存在
使用wildcard函数与ifeq或者ifneq:
格式:
ifneq ($(MISC_CONFIG), $(wildcard $(MISC_CONFIG)))
…
else
…
endif
示例,判断…/sdk_compose/config是否存在:
MISC_CONFIG=../sdk_compose/config
ifneq ($(MISC_CONFIG), $(wildcard $(MISC_CONFIG)))
@echo $(MISC_CONFIG) does't exist.
else
@echo $(MISC_CONFIG) exist.
endif
2.makefile判断文件夹是否存在
使用if参数,makefile判断目录是否存在,可以带!取反。
格式:
if [ -d “目录” ]; then dos th; else do sth; fi
示例,判断文件夹./mydir不存在:
MY_DIR=./mydir
if [ ! -d "$(MY_DIR)" ]; then \
echo "$(MY_DIR) exist"; \
else
echo "$(MY_DIR) does't exist"; \
fi
3.makefile判断变量是否存在
使用ifdef,或者ifndef
格式:
ifdef MISC_CONFIG
…
else
…
endif
示例,判断变量MISC_CONFIG是否已经被定义:
ifdef MISC_CONFIG
@echo $(MISC_CONFIG) is defined.
else
@echo $(MISC_CONFIG) does't exist.
endif
4.makfile判断变量是否相等
格式:ifeq “ARG1” “ARG2”
其中双引号 "可以换成括号()或者单引号’。
ifeq “ARG1” “ARG2”
…
else
…
endif
示例,使用“ifeq”判断变量MISC_CONFIG是否等于…/sdk_compose/config:
ifeq ("../sdk_compose/config", "$(MISC_CONFIG)")
@echo MISC_CONFIG is ../sdk_compose/config.
else
@echo $(MISC_CONFIG) is not ../sdk_compose/config.
endif
5.makefile判断条件是否成立
使用if,格式:
if 条件;then
… ;
else
… ;
fi
示例,判断MISC_CONFIG变量是否存在:
if $(MISC_CONFIG); then \
echo "$MISC_CONFIG exist"; \
else \
echo "MISC_CONFIG does't "; \
fi; \