Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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
Makefile 必须在创建目标之前加载模块_Makefile - Fatal编程技术网

Makefile 必须在创建目标之前加载模块

Makefile 必须在创建目标之前加载模块,makefile,Makefile,我需要确保加载某些模块以继续构建过程。我需要一个Makefile,可以使一个或几个程序(子模型) 我目前拥有的: all : submodel_01 submodel_02 submodel_03 check-modules: load_modules.sh @if [ -z "${MODULES_LOADED}" ]; then \ echo "Please run"; \ echo "source $<"; \ echo "fi

我需要确保加载某些模块以继续构建过程。我需要一个Makefile,可以使一个或几个程序(子模型)

我目前拥有的:

all : submodel_01 submodel_02 submodel_03

check-modules: load_modules.sh
    @if [ -z "${MODULES_LOADED}" ]; then \
        echo "Please run"; \
        echo "source $<"; \
        echo "first."; \
        exit 1; \
    fi

.PHONY: check-modules

load_modules.sh:
    @echo "export MODULES_LOADED=yes" > $@
    @echo "module load intel-compiler" >> $@
    @echo "module load openmpi" >> $@

submodel_01: check-modules
    <command to make submodel_01>

submodel_02: check-modules
    <command to make submodel_02>

submodel_03: check-modules
    <command to make submodel_03>
all:submodel\u 01 submodel\u 02 submodel\u 03
检查模块:加载_modules.sh
@如果[-z“${MODULES_LOADED}”];然后\
回声“请跑”\

echo“source$免责声明:我不是MPI专家,无法测试

我认为,要使
模块加载
命令起作用,它必须由父进程执行(在运行Makefile之前),或者在需要环境的同一个shell中执行

考虑到在一个单独的shell中运行的每个单独的操作,我认为以下操作将不起作用-设置将不会传递给第二个命令(建议您尝试一下,以防万一)

submodel_01:
    source load_modules.sh
    <command that depends on modules>
submodel_01:
    source load_modules.sh ; <commands that depends on modules.sh>
if [ ! "$MODULES_LOADED" ] ; then
   module load intel-compiler"
   module load openmpi
   export MODULES_LOADED=yes"
fi