Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Makefile,在用户运行任何目标之前运行环境检查目标_Linux_Bash_Shell_Makefile - Fatal编程技术网

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

Linux Makefile,在用户运行任何目标之前运行环境检查目标,linux,bash,shell,makefile,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. \

我想在任何其他目标之前运行以下环境检查目标
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
target,我该怎么做?除了我将
checkenv
添加到每个目标的依赖项列表之外,还有其他方法吗?
因为我在这个文件中有很多目标,而且我认为添加到每个目标中并不酷。。。是否应该有任何可能的规则来执行此操作?
非常感谢你的帮助

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

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

是的,这是一个很好的方法。这种任务不需要设定目标。