Spec-Zone.ru › CMake 3.27

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_. Имя свойства должно содержать по крайней мере один символ нижнего подчеркивания. Рекомендуется, чтобы имя свойства имело префикс, специфичный для проекта.

См. также

  • get_property()
  • set_property()

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

Spec-Zone.ru

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