查找环境模块¶
在 3.15 版本加入.
找到一个环境模块实现并使命令可用于 CMake 脚本以使用它们。这与基于 Lua 的 Lmod 和基于 TCL 的环境模块兼容。
此模块适用于在 CTest Script <CTest Script>` (ctest -S) 中设置编译器和库环境的用例。它也可以在 CMake Script (cmake -P) 中使用。
备注
加载的环境将不会在调用过程结束后继续存在。不要在项目代码(CMakeLists.txt 文件)中使用此模块来加载编译环境;在构建期间它将不可用。而是在运行 CMake 或使用生成的构建系统之前手动加载环境。
用法示例¶
set(CTEST_BUILD_NAME "CrayLinux-CrayPE-Cray-dynamic")
set(CTEST_BUILD_CONFIGURATION Release)
set(CTEST_BUILD_FLAGS "-k -j8")
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
...
find_package(EnvModules REQUIRED)
env_module(purge)
env_module(load modules)
env_module(load craype)
env_module(load PrgEnv-cray)
env_module(load craype-knl)
env_module(load cray-mpich)
env_module(load cray-libsci)
set(ENV{CRAYPE_LINK_TYPE} dynamic)
...
结果变量¶
该模块将在您的项目中设置以下变量:
EnvModules_FOUND如果找到兼容的环境模块框架,则为真。
缓存变量¶
将设置以下缓存变量:
EnvModules_COMMAND要使用的低级模块命令。当前支持的实现是基于 Lua 的 Lmod 和基于 TCL 的 EnvironmentModules。
环境变量¶
ENV{MODULESHOME}通常由模块环境实现设置,用作定位要执行的模块命令的提示。
提供的功能¶
这定义了以下用于与环境模块交互的 CMake 函数:
- env_module¶
执行任意模块命令:
env_module(cmd arg1 ... argN) env_module( COMMAND cmd arg1 ... argN [OUTPUT_VARIABLE <out-var>] [RESULT_VARIABLE <ret-var>] )
选项是:
cmd arg1 ... argN要执行的模块子命令和参数,就好像它们直接传递给 shell 环境中的模块命令一样。
OUTPUT_VARIABLE <输出变量>执行模块命令的标准输出。
RESULT_VARIABLE <ret-var>执行模块命令的返回码。
- env_module_swap¶
将一个模块换成另一个:
env_module_swap(out_mod in_mod [OUTPUT_VARIABLE <out-var>] [RESULT_VARIABLE <ret-var>] )
这在功能上等同于
module swap out_mod in_modshell 命令。选项是:OUTPUT_VARIABLE <输出变量>执行模块命令的标准输出。
RESULT_VARIABLE <ret-var>执行模块命令的返回码。