Makefile foreach里面的if

时间:2016-03-04 08:48:13

标签: foreach makefile

我试图运行只在条件满足时运行的foreach函数。

当我删除周围的if时,foreach函数正常工作。当我像下面的代码那样编写makefile时,foreach循环在执行第一个命令之前停止工作,并且构建过程永远不会结束(我不认为我构建了一个无限循环,因为没有执行任何内部命令)


if [ $(BUILD_SPEC) = mySpec ]; \
   then ( \
      if [ ! -d $(PRJ_ROOT_DIR)/TARGET ]; then mkdir $(PRJ_ROOT_DIR)/TARGET; fi; \
      $(foreach target,$(basename $(PROJECT_TARGETS)), \
         if [ -e $(PRJ_ROOT_DIR)/$(BUILD_SPEC)/$(target).crc ]; \
           then ( \
              echo Deleting $(PRJ_ROOT_DIR)/$(BUILD_SPEC)/$(target).crc; \
              rm -f $(PRJ_ROOT_DIR)/$(BUILD_SPEC)/$(target).crc; \
              ) \
           fi; \
      ) \
   ) \
fi;

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题: 出于某种原因命令" if [$(BUILD_SPEC)= mySpec];"不起作用。我将它替换为" ifeq($(BUILD_SPEC),mySpec)"。现在脚本以我想要的方式工作。