Makefile 必须在创建目标之前加载模块
我需要确保加载某些模块以继续构建过程。我需要一个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
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