FindEnvModules¶
新增於版本 3.15。
尋找環境模組實作並使命令可供 CMake 腳本使用。這與基於 Lua 的 Lmod 和基於 TCL 的 EnvironmentModules 皆相容。
此模組旨在用於在 CTest 腳本 (ctest -S
) 中設定編譯器和函式庫環境。它也可以在 CMake 腳本 (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
如果找到相容的環境模組框架,則為 True。
快取變數¶
將設定以下快取變數
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 <out-var>
執行模組命令的標準輸出。
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_mod
shell 命令。選項如下OUTPUT_VARIABLE <out-var>
執行模組命令的標準輸出。
RESULT_VARIABLE <ret-var>
執行模組命令的回傳碼。