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 -
Истина, если был найден совместимый фреймворк модулей среды.
Переменные кэша
Будет установлена следующая переменная кэша:
-
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 -
Подкоманда и аргументы модуля для выполнения, как если бы они были переданы непосредственно команде модуля в вашей оболочке.
-
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в оболочке. Параметры:-
OUTPUT_VARIABLE <out-var> -
Стандартный вывод от выполнения команды модуля.
-
RESULT_VARIABLE <ret-var> -
Код возврата от выполнения команды модуля.
-
-
env_module_list -
Получить список текущих загруженных модулей:
env_module_list(<out-var>)
Функционально эквивалентно команде
module listв оболочке. Результат сохраняется в<out-var>как правильно отформатированная CMake переменная списка, разделённая точками с запятой.
-
env_module_avail -
Получить список доступных модулей:
env_module_avail([<mod-prefix>] <out-var>)
Функционально эквивалентно команде
module avail <mod-prefix>в оболочке. Результат сохраняется в<out-var>как правильно отформатированная CMake переменная списка, разделённая точками с запятой.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/module/FindEnvModules.html