Spec-Zone.ru › CMake 3.23

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.23/command/define_property.html

Spec-Zone.ru

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