Makefile,在用户运行任何目标之前运行环境检查目标

时间:2014-06-18 07:31:10

标签: linux bash shell makefile

我希望在任何其他目标

之前运行以下环境检查目标checkenv
all: build_sub_target1 build_target2
clean: clean_sub_target1 clean_target2
...
...

checkenv:
    $(if $(PROJECT_ROOT), , \
      $(error $(shell echo -e '\033[41;33mFATAL: Please load project settings first. \
        Run "source PROJECT_ROOT_DIR/envsetup.sh"\033[0m')) \
    )

我希望每个其他目标在实际执行任务之前运行checkenv目标,我该怎么做?除了我将checkenv添加到每个目标的依赖列表之外的任何其他方式? 由于我在此文件中有许多目标,并且我认为添加到每个目标中并不酷...应该有任何可能的规则来执行此操作吗?
非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用make conditionals,以便在读取makefile时和在评估目标之前检查此条件:

ifndef PROJECT_ROOT
$(error "Please load project settings first. Run source PROJECT_ROOT_DIR/envsetup.sh")
endif