Spec-Zone.ru › CMake

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(CACHE{<variable>} [TYPE <type>] [HELP <helpstring>...] [FORCE] VALUE [<value>...])

Добавлено в версии 4.2.

Задаёт указанную переменную кэша <variable> (запись кэша). Доступны следующие параметры:

TYPE <type>

Указывает тип записи кэша. <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.

Если TYPE не указан, переменная кэша уже существует и её тип не UNINITIALIZED, сохраняется ранее заданный тип; в противном случае используется STRING.

HELP <helpstring>...

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

Если HELP не указан, используется пустая строка.

FORCE

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

VALUE <value>...

Список значений, присваиваемых переменной кэша <variable>. Этот аргумент всегда должен быть последним.

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

Примечание

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

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

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

Эта сигнатура поддерживается для обеспечения совместимости. Рекомендуется использовать другую сигнатуру.

Задание переменной среды

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

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

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

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

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

См. также

  • unset()

© 2000–2026 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