Spec-Zone.ru › CMake 3.22

FindEnvModules

Новое в версии 3.15.

Распознаёт реализацию модуля среды и делает команды доступными для скриптов CMake для их использования. Это совместимо как с основанными на Lua Lmod, так и с основанными на TCL EnvironmentModules.

Этот модуль предназначен для использования в сценариях 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

Подкоманда модуля и аргументы для выполнения, как если бы они были переданы непосредственно команде модуля в вашей оболочке.

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–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/module/FindEnvModules.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API