Spec-Zone.ru › CMake 3.28

set

Устанавливает переменную обычного типа, кэша или среды с заданным значением. См. документацию cmake-language(7) переменные для области действия и взаимодействия обычных переменных и записей кэша.

Подписи этого команды, которые содержат <value>... плацехолдер, ожидают ноль или более аргументов. Несколько аргументов будут объединены как список, разделенный точкой с запятой, чтобы сформировать фактическое значение устанавливаемой переменной.

Установка обычной переменной

set(<variable> <value>... [PARENT_SCOPE])

Установить или сбросить <variable> в текущем объёме функции или директории:

  • Если указано хотя бы одно <value>..., установить переменную в это значение.
  • Если значение не указано, сбросить переменную. Это эквивалентно unset(<variable>).

Если задан параметр PARENT_SCOPE, переменная будет установлена в области над текущей. Каждая новая директория или function() команда создают новый объём. Объём также может быть создан командой block(). set(PARENT_SCOPE) установит значение переменной в родительской директории, вызываемой функции или охватывающем объёме (в зависимости от ситуации). Предыдущее состояние значения переменной остаётся неизменным в текущем объёме (например, если она была неопределённой ранее, она по-прежнему остаётся неопределённой, а если у неё было значение, то это значение сохраняется).

Команды block(PROPAGATE) и return(PROPAGATE) могут использоваться как альтернативный способ к командам set(PARENT_SCOPE) и unset(PARENT_SCOPE) для обновления родительского объёма.

Примечание

При вычислении ссылок на переменные в формате ${VAR}, CMake сначала ищет обычную переменную с таким именем. Если такая обычная переменная не существует, CMake затем ищет запись кэша с таким именем. Из-за этого сброс обычной переменной может сделать видимой переменную кэша, которая ранее была скрыта. Чтобы принудительно сделать ссылку на переменную в формате ${VAR} возвращающей пустую строку, используйте set(<variable> ""), который очищает обычную переменную, но оставляет её определённой.

Установка записи кэша

set(<variable> <value>... CACHE <type> <docstring> [FORCE])

Устанавливает заданную запись кэша <variable> (запись кэша). Поскольку записи кэша предназначены для предоставления настраиваемых пользователем значений, это по умолчанию не перезаписывает существующие записи кэша. Используйте параметр FORCE для перезаписи существующих записей.

<type> должно быть указано как одно из:

BOOL

Булево ON/OFF значение. cmake-gui(1) предлагает флажок.

FILEPATH

Путь к файлу на диске. cmake-gui(1) предлагает диалог выбора файла.

PATH

Путь к директории на диске. cmake-gui(1) предлагает диалог выбора файла.

STRING

Строка текста. cmake-gui(1) предлагает текстовое поле или выпадающий список, если свойство записи кэша STRINGS установлено.

INTERNAL

Строка текста. cmake-gui(1) не отображает внутренние записи. Они могут использоваться для постоянного хранения переменных между запусками. Использование этого типа подразумевает FORCE.

<docstring> должно быть указано как строка, предоставляющая краткое описание параметра для отображения пользователям cmake-gui(1).

Если запись кэша не существует до вызова или задан параметр FORCE, запись кэша будет установлена в заданное значение.

Примечание

Содержимое переменной кэша не будет непосредственно доступно, если уже существует обычная переменная с тем же именем (см. правила оценки переменных). Если политика CMP0126 установлена в OLD, любая привязка обычной переменной в текущем объёме будет удалена.

Возможно, запись кэша существует до вызова, но не имеет установленного типа, если она была создана на cmake(1) командной строке пользователем с помощью опции -D<var>=<value> без указания типа. В этом случае команда set добавит тип. Кроме того, если <type> равна PATH или FILEPATH, а путь <value>, предоставленный в командной строке, является относительным, то команда set будет обрабатывать путь как относительный к текущей рабочей директории и преобразует его в абсолютный путь.

Установка переменной среды

set(ENV{<variable>} [<value>])

Устанавливает Environment Variable в заданное значение. Последующие вызовы $ENV{<variable>} вернут это новое значение.

Эта команда влияет только на текущий процесс CMake, а не на процесс, из которого был вызван CMake, ни на системную среду в целом, ни на среду последующих процессов сборки или тестирования.

Если после ENV{<variable>} не задано ни одного аргумента, или если <value> является пустой строкой, то эта команда очистит любое существующее значение переменной среды.

Аргументы после <value> игнорируются. Если обнаружены дополнительные аргументы, выводится предупреждение автора.

См. также

  • unset()

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/set.html

Spec-Zone.ru

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