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>игнорируются. Если обнаружены дополнительные аргументы, выводится предупреждение автора.
См. также
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/set.html