【问题标题】:Makefile, Run environment check target before user run any targetsMakefile,在用户运行任何目标之前运行环境检查目标
【发布时间】:2014-06-18 16:59:39
【问题描述】:

我想在任何其他目标之前运行以下环境检查目标 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 添加到每个目标的依赖列表之外还有其他方法吗?
由于我在这个文件中有很多目标,并且我认为添加到每个目标中并不酷......是否应该有任何潜在的规则来做到这一点?
非常感谢您的帮助!

【问题讨论】:

    标签: linux bash shell makefile


    【解决方案1】:

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

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

    【讨论】:

    • 是的,这是一个很好的方法。这种任务不需要制定目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多