set
Установите переменную обычного, кэш или окружения заданному значению. См. документацию cmake-language(7) variables для областей видимости и взаимодействия обычных переменных и записей кэша.
Подписи этой команды, которые задают <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/v3.30/command/set.html