set_property
Установите именованное свойство в заданном контексте.
set_property(<GLOBAL |
DIRECTORY [<dir>] |
TARGET [<target1> ...] |
SOURCE [<src1> ...]
[DIRECTORY <dirs> ...]
[TARGET_DIRECTORY <targets> ...] |
INSTALL [<file1> ...] |
TEST [<test1> ...]
[DIRECTORY <dir>] |
CACHE [<entry1> ...] >
[APPEND] [APPEND_STRING]
PROPERTY <name> [<value1> ...])
Устанавливает одно свойство для одного или нескольких объектов в рамках контекста.
Первый аргумент определяет область, в которой устанавливается свойство. Он должен быть одним из следующих:
-
GLOBAL -
Контекст уникален и не принимает имя.
-
DIRECTORY -
Контекст по умолчанию — текущая директория, но другие директории (уже обработанные CMake) могут быть указаны полным или относительным путем. Относительные пути рассматриваются относительно текущей директории исходного кода. Смотрите также команду
set_directory_properties().Новое в версии 3.19:
<dir>может ссылаться на директорию двоичных файлов. -
TARGET -
Контекст может содержать ноль или несколько существующих целевых объектов. Смотрите также команду
set_target_properties().Псевдонимы целевых объектов не поддерживают установку свойств целевых объектов.
-
SOURCE -
Контекст может содержать ноль или несколько исходных файлов. По умолчанию, свойства исходных файлов видны только для целевых объектов, добавленных в той же директории (
CMakeLists.txt).Новое в версии 3.18: Видимость можно задать в других контекстах директорий, используя один или оба следующих подварианта:
-
DIRECTORY <dirs>... -
Свойство исходного файла будет установлено в каждом из контекстов директорий
<dirs>. CMake должен уже знать о каждой из этих директорий, либо добавив их с помощью вызоваadd_subdirectory(), либо это корневая директория исходного кода. Относительные пути рассматриваются относительно текущей директории исходного кода.Новое в версии 3.19:
<dirs>может ссылаться на директорию двоичных файлов. -
TARGET_DIRECTORY <targets>... -
Свойство исходного файла будет установлено в каждом контексте директории, где был создан любой из указанных
<targets>(директории<targets>должны, следовательно, уже существовать).
Смотрите также команду
set_source_files_properties(). -
-
INSTALL -
Новое в версии 3.1.
Контекст может содержать ноль или несколько путей установленных файлов. Они предоставляются CPack для влияния на установку.
И ключ свойства, и значение могут использовать генераторские выражения. Конкретные свойства могут применяться к установленным файлам и/или директориям.
Компоненты пути должны быть разделены прямыми слешами, должны быть нормализованы и регистрозависимы.
Чтобы сослаться на сам префикс установки с помощью относительного пути, используйте
..В настоящее время свойства установленных файлов определены только для генератора WIX, где данные пути относительны к префиксу установки.
-
TEST -
Контекст ограничен директорией, в которой вызвана команда. Он может содержать ноль или несколько существующих тестов. Смотрите также команду
set_tests_properties().Значения свойств тестов могут быть заданы с помощью
generator expressionsдля тестов, созданных с помощьюadd_test(NAME).Новое в версии 3.28: Видимость можно задать в других контекстах директорий, используя следующий подвариант:
-
DIRECTORY <dir> -
Свойство теста будет установлено в контексте директории
<dir>. CMake должен уже знать об этой директории, либо добавив её с помощью вызоваadd_subdirectory(), либо это корневая директория исходного кода. Относительные пути рассматриваются относительно текущей директории исходного кода.<dir>может ссылаться на директорию двоичных файлов.
-
-
CACHE -
Контекст должен содержать ноль или несколько существующих записей кеша.
Обязательный параметр PROPERTY сразу же следует за именем свойства для установки. Остальные аргументы используются для построения значения свойства в виде списка, разделённого точкой с запятой.
Если задан параметр APPEND, список добавляется к любому существующему значению свойства (за исключением того, что пустые значения игнорируются и не добавляются). Если задан параметр APPEND_STRING, строка добавляется к любому существующему значению свойства как строка, то есть в результате получается более длинная строка, а не список строк. При использовании APPEND или APPEND_STRING со свойством, определённым для поддержки поведения INHERITED (см. define_property()), наследование не происходит при поиске начального значения для добавления. Если свойство ещё не установлено непосредственно в заданном контексте, команда будет вести себя так, как если бы APPEND или APPEND_STRING не были заданы.
Примечание
Свойство исходного файла GENERATED может быть глобально видимым. Подробности см. в документации.
См. также
define_property()get_property()- Справочник
cmake-properties(7)для списка свойств в каждом контексте.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.28/command/set_property.html