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; \