Spec-Zone.ru › CMake 3.24

define_property

Определяет и документирует пользовательские свойства.

define_property(<GLOBAL | DIRECTORY | TARGET | SOURCE |
                 TEST | VARIABLE | CACHED_VARIABLE>
                 PROPERTY <name> [INHERITED]
                 [BRIEF_DOCS <brief-doc> [docs...]]
                 [FULL_DOCS <full-doc> [docs...]]
                 [INITIALIZE_FROM_VARIABLE <variable>])

Определяет одно свойство в области для использования с командами set_property() и get_property(). Она в основном полезна для определения того, как свойство инициализируется или наследуется. Раньше эта команда также ассоциировала документацию со свойством, но это больше не считается основным случаем использования.

Первый аргумент определяет тип области, в которой должно использоваться свойство. Он должен быть одним из следующих:

GLOBAL    = associated with the global namespace
DIRECTORY = associated with one directory
TARGET    = associated with one target
SOURCE    = associated with one source file
TEST      = associated with a test named with add_test
VARIABLE  = documents a CMake language variable
CACHED_VARIABLE = documents a CMake cache variable

Обратите внимание, что в отличие от set_property() и get_property(), фактическая область не требуется; важен только тип области.

Требуемый PROPERTY параметр сразу же следует за именем определяемого свойства.

Если задан параметр INHERITED, то команда get_property() будет переходить к следующей более высокой области, когда запрашиваемое свойство не установлено в заданной области.

  • DIRECTORY область переходит к области родительского каталога, продолжая переход вверх по родительским каталогам, пока каталог не установит свойство или больше нет родителей. Если свойство не найдено в корневом каталоге, оно переходит к GLOBAL области.
  • TARGET, SOURCE и TEST свойства переходят в DIRECTORY область, включая дальнейший переход вверх по каталогам и т.д. по мере необходимости.

Обратите внимание, что это поведение цепочки областей применяется только к вызовам get_property(), get_directory_property(), get_target_property(), get_source_file_property() и get_test_property(). Поведение наследования не используется при установлении свойств, поэтому использование APPEND или APPEND_STRING с командой set_property() не будет учитывать унаследованные значения при вычислении содержимого, которое нужно добавить.

Параметры BRIEF_DOCS и FULL_DOCS следуют за строками, которые должны быть связаны со свойством в качестве краткого и полного описания. CMake не использует эту документацию, кроме как делает ее доступной для проекта с помощью соответствующих параметров команды get_property().

Изменено в версии 3.23: Параметры BRIEF_DOCS и FULL_DOCS являются необязательными.

Добавлена в версии 3.23: Параметр INITIALIZE_FROM_VARIABLE указывает переменную, из которой должно быть инициализировано свойство. Он может быть использован только со свойствами целевых объектов. Имя <variable> должно заканчиваться именем свойства и не должно начинаться с CMAKE_ или _CMAKE_ . Имя свойства должно содержать по крайней мере один символ подчеркивания. Рекомендуется, чтобы имя свойства имело префикс, специфичный для проекта.

© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.24/command/define_property.html

Spec-Zone.ru

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