Spec-Zone.ru › CMake 3.31

set

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

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

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

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/v3.31/command/set.html

Spec-Zone.ru

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