Spec-Zone.ru › CMake 3.15

cmake-file-api(7)

  • Введение
  • API v1

    • v1 Общие бессостоятельные запросы файлов
    • v1 Бессостоятельные запросы файлов клиента
    • v1 Состоятельные запросы файлов клиента
    • v1 Файл индекса ответов

      • v1 Ссылка на файлы ответов
    • v1 Файлы ответов
  • Типы объектов

    • Тип объекта “codemodel”

      • “codemodel” версия 2
      • Объект “target” версии 2 “codemodel”
    • Тип объекта “cache”

      • “cache” версия 2
    • Тип объекта “cmakeFiles”

      • “cmakeFiles” версия 1

Введение

CMake предоставляет API на основе файлов, которое клиенты могут использовать для получения семантической информации о системах сборки, генерируемых CMake. Клиенты могут использовать API, записывая файлы запросов в определённом месте дерева сборки, чтобы запросить ноль или более типов объектов. Когда CMake генерирует систему сборки в этом дереве, она будет читать файлы запросов и записывать файлы ответов для чтения клиентом.

API на основе файлов использует директорию <build>/.cmake/api/ вверху дерева сборки. API имеет версионирование, чтобы поддерживать изменения в структуре файлов внутри директории API. Версионирование структуры файлов API ортогонально версионированию типов объектов, используемых в ответах. Эта версия CMake поддерживает только одну версию API, API v1.

API v1

API v1 размещён в директории <build>/.cmake/api/v1/. В ней есть следующие поддиректории:

query/

Содержит файлы запросов, написанные клиентами. Это могут быть v1 Общие бессостоятельные запросы файлов, v1 Бессостоятельные запросы файлов клиента или v1 Состоятельные запросы файлов клиента.

reply/

Содержит файлы ответов, которые записывает CMake при запуске для генерации системы сборки. Они индексируются файлом v1 Файл индекса ответов, который может ссылаться на дополнительные v1 Файлы ответов. CMake владеет всеми файлами ответов. Клиенты не должны их удалять.

Клиенты могут в любое время искать и читать файл индекса ответов. Клиенты могут по желанию создать директорию reply/ в любое время и отслеживать её появление нового файла индекса ответов.

v1 Общие бессостоятельные запросы файлов

Общие бессостоятельные запросы файлов позволяют клиентам обмениваться запросами на основные версии типов объектов и получать все распознанные CMake версии.

Клиенты могут создавать общие запросы, создавая пустые файлы в директории v1/query/. Формат:

<build>/.cmake/api/v1/query/<kind>-v<major>

где <kind> — один из типов объектов, -v — литерал, а <major> — номер основной версии.

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

v1 Бессостоятельные запросы файлов клиента

Бессостоятельные запросы файлов клиента позволяют клиентам создавать собственные запросы на основные версии типов объектов и получать все распознанные CMake версии.

Клиенты могут создавать собственные запросы, создавая пустые файлы в поддиректориях запросов клиента. Формат:

<build>/.cmake/api/v1/query/client-<client>/<kind>-v<major>

где client- — литерал, <client> — строка, уникально идентифицирующая клиента, <kind> — один из типов объектов, -v — литерал, а <major> — номер основной версии. Каждый клиент должен выбрать уникальный идентификатор <client> самостоятельно.

Файлы такого формата являются бессостоятельными запросами, принадлежащими клиенту <client>. Владелец клиента может их удалить в любое время.

v1 Состоятельные запросы файлов клиента

Состоятельные файлы запросов позволяют клиентам запрашивать список версий каждого из типов объектов и получать только последнюю версию, распознанную CMake.

Клиенты могут создавать собственные состоятельные запросы, создавая файлы query.json в поддиректориях запросов клиента. Формат:

<build>/.cmake/api/v1/query/client-<client>/query.json

где client- — литерал, <client> — строка, уникально идентифицирующая клиента, а query.json — литерал. Каждый клиент должен выбрать уникальный идентификатор <client> самостоятельно.

Файлы query.json являются состоятельными запросами, принадлежащими клиенту <client>. Владелец клиента может обновлять или удалять их в любое время. При обновлении клиента он может обновить состоятельные запросы, написанные в деревьях сборки, чтобы запросить новые версии объектов. Это позволяет избежать ненужной генерации CMake нескольких версий объектов.

Файл query.json должен содержать JSON-объект:

{
  "requests": [
    { "kind": "<kind>" , "version": 1 },
    { "kind": "<kind>" , "version": { "major": 1, "minor": 2 } },
    { "kind": "<kind>" , "version": [2, 1] },
    { "kind": "<kind>" , "version": [2, { "major": 1, "minor": 2 }] },
    { "kind": "<kind>" , "version": 1, "client": {} },
    { "kind": "..." }
  ],
  "client": {}
}

Члены объекта:

requests

JSON-массив, содержащий ноль или более запросов. Каждый запрос — JSON-объект с членами:

kind

Указывает один из типов объектов, который должен быть включён в ответ.

version

Указывает версию(и) типа объекта, которые понимает клиент. Версии имеют основные и второстепенные компоненты, следуя соглашениям семантической версии. Значение должно быть

  • целым числом JSON, определяющим (неотрицательный) номер основной версии, или
  • JSON-объектом, содержащим major и (необязательно) minor члены, определяющие неотрицательные целые числовые компоненты версии, или
  • JSON-массивом, элементы которого являются вышеперечисленным.
client

Необязательный член, зарезервированный для использования клиентом. Это значение сохраняется в ответе, написанном для клиента в v1 Файл индекса ответов, но в остальном игнорируется. Клиенты могут использовать это для передачи дополнительной информации с запросом в ответ.

Для каждого запрошенного типа объекта CMake выберет первую версию, которую она распознаёт для этого типа среди перечисленных в запросе. Ответ будет использовать выбранную главную версию с наибольшей второстепенной версией, известной исполняемому CMake для этой основной версии. Поэтому клиенты должны перечислить все поддерживаемые главные версии в предпочтительном порядке вместе с минимальной второстепенной версией, необходимой для каждой основной версии.

client

Необязательный член, зарезервированный для использования клиентом. Это значение сохраняется в ответе, написанном для клиента в v1 Файл индекса ответов, но в остальном игнорируется. Клиенты могут использовать это для передачи дополнительной информации с запросом в ответ.

Другие query.json члены верхнего уровня зарезервированы для будущего использования. Если они присутствуют, они игнорируются для совместимости с будущими версиями.

v1 Файл индекса ответов

CMake записывает файл index-*.json в директорию v1/reply/ при каждом запуске для генерации системы сборки. Клиенты должны сначала прочитать файл индекса ответов и могут читать другие v1 Файлы ответов только следуя ссылкам. Формат имени файла индекса ответов:

<build>/.cmake/api/v1/reply/index-<unspecified>.json

где index- — литерал, а <unspecified> — неопределённое имя, выбранное CMake. При генерации нового файла индекса ему присваивается новое имя, и все старые файлы удаляются. В короткий период между этими шагами могут присутствовать несколько файлов индекса; файл с наибольшим именем в лексикографическом порядке является текущим файлом индекса.

Файл индекса ответов содержит JSON-объект:

{
  "cmake": {
    "version": {
      "major": 3, "minor": 14, "patch": 0, "suffix": "",
      "string": "3.14.0", "isDirty": false
    },
    "paths": {
      "cmake": "/prefix/bin/cmake",
      "ctest": "/prefix/bin/ctest",
      "cpack": "/prefix/bin/cpack",
      "root": "/prefix/share/cmake-3.14"
    },
    "generator": {
      "name": "Unix Makefiles"
    }
  },
  "objects": [
    { "kind": "<kind>",
      "version": { "major": 1, "minor": 0 },
      "jsonFile": "<file>" },
    { "...": "..." }
  ],
  "reply": {
    "<kind>-v<major>": { "kind": "<kind>",
                         "version": { "major": 1, "minor": 0 },
                         "jsonFile": "<file>" },
    "<unknown>": { "error": "unknown query file" },
    "...": {},
    "client-<client>": {
      "<kind>-v<major>": { "kind": "<kind>",
                           "version": { "major": 1, "minor": 0 },
                           "jsonFile": "<file>" },
      "<unknown>": { "error": "unknown query file" },
      "...": {},
      "query.json": {
        "requests": [ {}, {}, {} ],
        "responses": [
          { "kind": "<kind>",
            "version": { "major": 1, "minor": 0 },
            "jsonFile": "<file>" },
          { "error": "unknown query file" },
          { "...": {} }
        ],
        "client": {}
      }
    }
  }
}

Члены объекта:

cmake

Объект JSON, содержащий информацию об экземпляре CMake, сгенерировавшем ответ. Он содержит члены:

version

Объект JSON, определяющий версию CMake с членами:

major, minor, patch

Целочисленные значения, определяющие главную, второстепенную и исправленную версии компонентов.

suffix

Строка, определяющая суффикс версии, если он есть, например, g0abc3.

string

Строка, определяющая полную версию в формате <major>.<minor>.<patch>[-<suffix>].

isDirty

Логическое значение, указывающее, была ли версия построена из дерева исходного кода, контролируемого версиями, с локальными изменениями.

paths

Объект JSON, определяющий пути к компонентам CMake. Он имеет члены для cmake, ctest, и cpack, значения которых являются строками JSON, определяющими абсолютный путь к каждому инструменту, представленному с помощью обратных слешей. Также имеет член root для абсолютного пути к каталогу, содержащему ресурсы CMake, такие как каталог Modules/ (см. CMAKE_ROOT).

generator

Объект JSON, описывающий используемый генератор CMake. Он имеет члены:

name

Строка, определяющая имя генератора.

platform

Если генератор поддерживает CMAKE_GENERATOR_PLATFORM, это строка, определяющая имя платформы генератора.

objects

Массив JSON, перечисляющий все версии всех видов объектов, сгенерированных в рамках ответа. Каждый элемент массива — ссылка на файл ответа v1.

reply

Объект JSON, отражающий содержимое каталога query/, который CMake загрузил для получения ответа. Члены имеют вид:

<kind>-v<major>

Член такого вида появляется для каждого из файлов запросов v1 общего использования без состояния, которые CMake распознал как запрос для вида объекта <kind> с основной версией <major>. Значение — ссылка на файл ответа v1 на соответствующий файл ответа для этого вида объекта и версии.

<unknown>

Член такого вида появляется для каждого из файлов запросов v1 общего использования без состояния, которые CMake не распознал. Значение — объект JSON с одним членом error, содержащим строку с сообщением об ошибке, указывающей, что файл запроса неизвестен.

client-<client>

Член такого вида появляется для каждого каталога, принадлежащего клиенту, содержащего файлы запросов v1 для клиентов без состояния. Значение — объект JSON, отражающий содержимое каталога query/client-<client>/. Члены имеют вид:

<kind>-v<major>

Член такого вида появляется для каждого из файлов запросов v1 для клиентов без состояния, которые CMake распознал как запрос для вида объекта <kind> с основной версией <major>. Значение — ссылка на файл ответа v1 на соответствующий файл ответа для этого вида объекта и версии.

<unknown>

Член такого вида появляется для каждого из файлов запросов v1 для клиентов без состояния, которые CMake не распознал. Значение — объект JSON с одним членом error, содержащим строку с сообщением об ошибке, указывающей, что файл запроса неизвестен.

query.json

Этот член появляется для клиентов, использующих файлы запросов v1 для клиентов с состоянием. Если файл query.json не удалось прочитать или разобрать как объект JSON, этот член является объектом JSON с одним членом error, содержащим строку с сообщением об ошибке. В противном случае этот член является объектом JSON, отражающим содержимое файла query.json. Члены:

client

Копия файла query.json член client, если он существует.

requests

Копия файла query.json член requests, если он существует.

responses

Если член query.json файла requests отсутствует или недействителен, этот член является объектом JSON с одним членом error, содержащим строку с сообщением об ошибке. В противном случае этот член содержит массив JSON с ответом для каждой записи массива requests, в том же порядке. Каждый ответ:

  • является объектом JSON с одним членом error , содержащим строку с сообщением об ошибке, или
  • является ссылкой на файл ответа v1 на соответствующий файл ответа для запрошенного вида объекта и выбранной версии.

После прочтения файла индекса ответа клиенты могут прочитать другие файлы ответов v1, на которые он ссылается.

Ссылка на файл ответа v1

Файл индекса ответа представляет каждую ссылку на другой файл ответа с помощью объекта JSON с членами:

kind

Строка, определяющая один из видов объектов.

version

Объект JSON с членами major и minor, определяющими целочисленные компоненты версии вида объекта.

jsonFile

Строка JSON, определяющая путь, относительный к файлу индекса ответа, к другому файлу JSON, содержащему объект.

Файлы ответов v1

Файлы ответов, содержащие конкретные виды объектов, записываются CMake. Имена этих файлов не определены и не должны интерпретироваться клиентами. Клиенты должны сначала прочитать файл индекса ответов v1 и следовать ссылкам на имена необходимых объектов ответа.

Файлы ответов (включая файл индекса) никогда не будут заменены файлами с тем же именем, но с другим содержимым. Это позволяет клиенту читать файлы одновременно с работающим CMake, который может сгенерировать новый ответ. Однако после генерации нового ответа CMake попытается удалить файлы ответов из предыдущих запусков, которые он не только что записал. Если клиент попытается прочитать файл ответа, на который ссылается индекс, но не найдет файл, это означает, что конкурирующий CMake сгенерировал новый ответ. Клиент может просто начать заново, прочитав новый файл индекса ответа.

Виды объектов

API CMake на основе файлов сообщает семантическую информацию о системе сборки, используя следующие виды объектов JSON. Каждый вид объекта независимо версияруется с использованием семантической версии с основными и второстепенными компонентами. Каждый вид объекта имеет вид:

{
  "kind": "<kind>",
  "version": { "major": 1, "minor": 0 },
  "...": {}
}

Член kind — строка, определяющая имя вида объекта. Член version — объект JSON с членами major и minor , определяющими целочисленные компоненты версии вида объекта. Дополнительные члены верхнего уровня специфичны для каждого вида объекта.

Вид объекта “codemodel”

Вид объекта codemodel описывает структуру системы сборки, как она моделируется CMake.

Существует только одна основная версия объекта codemodel, версия 2. Версия 1 не существует, чтобы избежать путаницы с версией из режима cmake-server(7).

“codemodel” версия 2

codemodel версия объекта 2 — объект JSON:

{
  "kind": "codemodel",
  "version": { "major": 2, "minor": 0 },
  "paths": {
    "source": "/path/to/top-level-source-dir",
    "build": "/path/to/top-level-build-dir"
  },
  "configurations": [
    {
      "name": "Debug",
      "directories": [
        {
          "source": ".",
          "build": ".",
          "childIndexes": [ 1 ],
          "projectIndex": 0,
          "targetIndexes": [ 0 ],
          "hasInstallRule": true,
          "minimumCMakeVersion": {
            "string": "3.14"
          }
        },
        {
          "source": "sub",
          "build": "sub",
          "parentIndex": 0,
          "projectIndex": 0,
          "targetIndexes": [ 1 ],
          "minimumCMakeVersion": {
            "string": "3.14"
          }
        }
      ],
      "projects": [
        {
          "name": "MyProject",
          "directoryIndexes": [ 0, 1 ],
          "targetIndexes": [ 0, 1 ]
        }
      ],
      "targets": [
        {
          "name": "MyExecutable",
          "directoryIndex": 0,
          "projectIndex": 0,
          "jsonFile": "<file>"
        },
        {
          "name": "MyLibrary",
          "directoryIndex": 1,
          "projectIndex": 0,
          "jsonFile": "<file>"
        }
      ]
    }
  ]
}

Члены, специфичные для объектов codemodel, это:

paths

Объект JSON, содержащий члены:

source

Строка, определяющая абсолютный путь к корневой папке исходного кода, представленная с помощью слешей.

build

Строка, определяющая абсолютный путь к корневой папке сборки, представленная с помощью слешей.

configurations

Массив JSON, содержащий записи, соответствующие доступным конфигурациям сборки. В генераторах с одной конфигурацией присутствует одна запись для значения переменной CMAKE_BUILD_TYPE. В генераторах с несколькими конфигурациями есть запись для каждой конфигурации, перечисленной в переменной CMAKE_CONFIGURATION_TYPES. Каждая запись — объект JSON, содержащий члены:

name

Строка, определяющая имя конфигурации, например Debug.

directories

Массив JSON, каждая запись которого соответствует папке системы сборки, исходная папка которой содержит файл CMakeLists.txt. Первая запись соответствует корневой папке. Каждая запись — объект JSON, содержащий члены:

source

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

build

Строка, определяющая путь к папке сборки, представленная с помощью слешей. Если папка находится внутри корневой папки сборки, путь указывается относительно этой папки (с . для самой корневой папки сборки). В противном случае путь абсолютный.

parentIndex

Необязательный член, присутствующий, когда папка не корневая. Значение — целое без знака, индекс с нуля другой записи в главном массиве directories, соответствующий родительской папке, которая добавила эту папку в качестве подпапки.

childIndexes

Необязательный член, присутствующий, когда у папки есть подпапки. Значение — массив JSON, содержащий записи, соответствующие подпапкам, созданным командой add_subdirectory() или subdirs(). Каждая запись — целое без знака, индекс с нуля другой записи в главном массиве directories.

projectIndex

Целое без знака, индекс с нуля в главном массиве projects, указывающий на проект системы сборки, к которому принадлежит эта папка.

targetIndexes

Необязательный член, присутствующий, когда у папки есть собственные целевые файлы, исключая те, которые принадлежат подпапкам. Значение — массив JSON, содержащий записи, соответствующие целевым файлам. Каждая запись — целое без знака, индекс с нуля в главном массиве targets.

minimumCMakeVersion

Необязательный член, присутствующий, когда известна минимальная требуемая версия CMake для папки. Это версия <min>, заданная в самом последнем вызове команды cmake_minimum_required(VERSION) в папке или одном из её предков. Значение — объект JSON с одним членом:

string

Строка, определяющая минимальную требуемую версию в формате:

<major>.<minor>[.<patch>[.<tweak>]][<suffix>]

Каждый компонент — целое без знака, а суффикс может быть произвольной строкой.

hasInstallRule

Необязательный член, присутствующий с логическим значением true, когда папка или одна из её подпапок содержит правила install(), т.е. доступны правила make install или аналогичные.

projects

Массив JSON, содержащий записи, соответствующие главному проекту и подпроектам, определённым в системе сборки. Каждый (под-)проект соответствует папке исходного кода, в файле CMakeLists.txt которой вызывается команда project() с именем проекта, отличным от имени родительской папки. Первая запись соответствует главному проекту.

Каждая запись — объект JSON, содержащий члены:

name

Строка, определяющая имя, заданное команде project().

parentIndex

Необязательный член, присутствующий, когда проект не главный. Значение — целое без знака, индекс с нуля другой записи в главном массиве projects проекта-родителя, который добавил этот проект как подпроект.

childIndexes

Необязательный член, присутствующий, когда у проекта есть подпроекты. Значение — массив JSON, содержащий записи, соответствующие подпроектам. Каждая запись — целое без знака, индекс с нуля другой записи в главном массиве projects.

directoryIndexes

Массив JSON, содержащий записи, соответствующие папкам системы сборки, которые являются частью проекта. Первая запись соответствует корневой папке проекта. Каждая запись — целое без знака, индекс с нуля в главном массиве directories.

targetIndexes

Необязательный член, присутствующий, когда у проекта есть собственные целевые файлы, исключая те, которые принадлежат подпроектам. Значение — массив JSON, содержащий записи, соответствующие целевым файлам. Каждая запись — целое без знака, индекс с нуля в главном массиве targets.

targets

Массив JSON, содержащий записи, соответствующие целевым файлам системы сборки. Такие целевые файлы создаются вызовами add_executable(), add_library() и add_custom_target(), за исключением импортированных целевых файлов и интерфейсных библиотек (которые не генерируют никаких правил сборки). Каждая запись — объект JSON, содержащий члены:

name

Строка, определяющая имя целевого файла.

id

Строка, уникально идентифицирующая целевой файл. Она соответствует полю id в файле, на который ссылается jsonFile.

directoryIndex

Целое без знака, индекс с нуля в главном массиве directories , указывающий на папку системы сборки, в которой определён целевой файл.

projectIndex

Целое без знака, индекс с нуля в главном массиве projects , указывающий на проект системы сборки, в котором определён целевой файл.

jsonFile

Строка JSON, определяющая путь относительно файла codemodel к другому файлу JSON, содержащему объект «target» версии 2 codemodel.

“codemodel” version 2 “target” object

Объект «target» codemodel ссылается на массив targets объекта «codemodel» версии 2. Каждый объект «target» — объект JSON с членами:

name

Строка, определяющая логическое имя целевого объекта.

id

Строка, уникально идентифицирующая целевой объект. Формат не определён и не должен интерпретироваться клиентами.

type

Строка, определяющая тип целевого объекта. Значение должно быть одним из EXECUTABLE, STATIC_LIBRARY, SHARED_LIBRARY, MODULE_LIBRARY, OBJECT_LIBRARY, или UTILITY.

backtrace

Необязательный член, присутствующий, когда доступен трассировка CMake языка к команде в исходном коде, создавшей целевой объект. Значение — это беззнаковое целое число, индекс с нуля в массиве backtraceGraph члена nodes.

folder

Необязательный член, присутствующий, когда свойство целевого объекта FOLDER задано. Значение — это JSON-объект с одним членом:

name

Строка, определяющая имя папки целевого объекта.

paths

JSON-объект, содержащий члены:

source

Строка, определяющая путь к каталогу исходных кодов целевого объекта, представленный с использованием слэшей. Если каталог находится внутри каталога исходных кодов верхнего уровня, путь задаётся относительно этого каталога (с использованием . для самого каталога исходных кодов верхнего уровня). В противном случае путь абсолютный.

build

Строка, определяющая путь к каталогу построения целевого объекта, представленный с использованием слэшей. Если каталог находится внутри каталога построения верхнего уровня, путь задаётся относительно этого каталога (с использованием . для самого каталога построения верхнего уровня). В противном случае путь абсолютный.

nameOnDisk

Необязательный член, присутствующий для исполняемых и библиотечных целевых объектов, связанных или архивированных в один основной артефакт. Значение — строка, определяющая имя файла этого артефакта на диске.

artifacts

Необязательный член, присутствующий для исполняемых и библиотечных целевых объектов, которые генерируют артефакты на диске, предназначенные для использования зависимыми объектами. Значение — JSON-массив записей, соответствующих артефактам. Каждая запись — JSON-объект, содержащий один член:

path

Строка, определяющая путь к файлу на диске, представленный с использованием слэшей. Если файл находится внутри каталога построения верхнего уровня, путь задаётся относительно этого каталога. В противном случае путь абсолютный.

isGeneratorProvided

Необязательный член, присутствующий со значением булева типа true, если целевой объект предоставляется генератором системы построения CMake, а не командой в исходном коде.

install

Необязательный член, присутствующий, когда целевой объект имеет правило install(). Значение — JSON-объект с членами:

prefix

JSON-объект, определяющий префикс установки. Он содержит один член:

path

Строка, определяющая значение CMAKE_INSTALL_PREFIX.

destinations

JSON-массив записей, определяющих путь назначения установки. Каждая запись — JSON-объект с членами:

path

Строка, определяющая путь назначения установки. Путь может быть абсолютным или относительным к префиксу установки.

backtrace

Необязательный член, присутствующий, когда доступна трассировка CMake языка к вызову команды install(), указавшей этот путь назначения. Значение — это беззнаковое целое число, индекс с нуля в массиве backtraceGraph члена nodes.

link

Необязательный член, присутствующий для исполняемых и динамических библиотечных целевых объектов, которые связываются с исполняемым файлом времени выполнения. Значение — JSON-объект с членами, описывающими этап связывания:

language

Строка, определяющая язык (например, C, CXX, Fortran) инструментальной цепочки, используемой для вызова компоновщика.

commandFragments

Необязательный член, присутствующий, когда доступны фрагменты вызова командной строки компоновщика. Значение — JSON-массив записей, определяющих упорядоченные фрагменты. Каждая запись — JSON-объект с членами:

fragment

Строка, определяющая фрагмент вызова командной строки компоновщика. Значение закодировано в формате командной строки родной оболочки системы построения.

role

Строка, определяющая роль содержимого фрагмента:

  • flags: флаги компоновки.
  • libraries: пути или флаги файлов библиотек компоновки.
  • libraryPath: флаги пути поиска библиотек.
  • frameworkPath: флаги пути поиска фреймворков macOS.
lto

Необязательный член, присутствующий со значением булева типа true, когда включена оптимизация времени компоновки (также известная как межпроцедурная оптимизация или генерация кода времени компоновки).

sysroot

Необязательный член, присутствующий, когда определена переменная CMAKE_SYSROOT_LINK или CMAKE_SYSROOT. Значение — JSON-объект с одним членом:

path

Строка, определяющая абсолютный путь к sysroot, представленный с использованием слэшей.

archive

Необязательный член, присутствующий для целевых объектов статических библиотек. Значение — JSON-объект с членами, описывающими этап архивирования:

commandFragments

Необязательный член, присутствующий, когда доступны фрагменты вызова командной строки архиватора. Значение — JSON-массив записей, определяющих фрагменты. Каждая запись — JSON-объект с членами:

fragment

Строка, определяющая фрагмент вызова командной строки архиватора. Значение закодировано в формате командной строки родной оболочки системы построения.

role

Строка, определяющая роль содержимого фрагмента:

  • flags: флаги архиватора.
lto

Необязательный член, присутствующий со значением булева типа true, когда включена оптимизация времени компоновки (также известная как межпроцедурная оптимизация или генерация кода времени компоновки).

dependencies

Необязательный член, присутствующий, когда целевой объект зависит от других целевых объектов. Значение — JSON-массив записей, соответствующих зависимостям. Каждая запись — JSON-объект с членами:

id

Строка, уникально идентифицирующая целевой объект, от которого зависит этот целевой объект. Соответствует основному члену id другого целевого объекта.

backtrace

Необязательный член, присутствующий, когда доступна трассировка CMake языка к вызову команды add_dependencies(), target_link_libraries() или другой команде, создавшей эту зависимость. Значение — это беззнаковое целое число, индекс с нуля в массиве backtraceGraph члена nodes.

sources

JSON-массив записей, соответствующих исходным файлам целевого объекта. Каждая запись — JSON-объект с членами:

path

Строка, определяющая путь к исходному файлу на диске, представленный с использованием слэшей. Если файл находится внутри каталога исходных кодов верхнего уровня, путь задаётся относительно этого каталога. В противном случае путь абсолютный.

compileGroupIndex

Необязательный член, присутствующий, когда исходный код компилируется. Значение — это беззнаковое целое число, индекс с нуля в массиве compileGroups.

sourceGroupIndex

Необязательный член, присутствующий, когда исходный код является частью группы исходных кодов, либо через команду source_group(), либо по умолчанию. Значение — это беззнаковое целое число, индекс с нуля в массиве sourceGroups.

isGenerated

Необязательный член, присутствующий со значением булева типа true, если исходный код является GENERATED.

backtrace

Необязательный член, присутствующий, когда доступна трассировка CMake языка к вызову команды target_sources(), add_executable(), add_library(), add_custom_target(), или другой команде, добавившей этот исходный код в целевой объект. Значение — это беззнаковое целое число, индекс с нуля в массиве backtraceGraph члена nodes.

sourceGroups

Дополнительный член, присутствующий, когда источники сгруппированы командой source_group() или по умолчанию. Значение — JSON-массив элементов, соответствующих группам. Каждый элемент — JSON-объект с членами:

name

Строка, определяющая имя группы источников.

sourceIndexes

JSON-массив, перечисляющий источники, принадлежащие группе. Каждый элемент — целое беззнаковое 0-базовое целое число, индекс в главном sources массиве целевого объекта.

compileGroups

Дополнительный член, присутствующий, когда целевой объект имеет компилируемые источники. Значение — JSON-массив элементов, соответствующих группам источников, которые компилируются с одинаковыми настройками. Каждый элемент — JSON-объект с членами:

sourceIndexes

JSON-массив, перечисляющий источники, принадлежащие группе. Каждый элемент — целое беззнаковое 0-базовое целое число, индекс в главном sources массиве целевого объекта.

language

Строка, определяющая язык (например, C, CXX, Fortran) используемой цепочки инструментов для компиляции исходного файла.

compileCommandFragments

Дополнительный член, присутствующий, когда доступны фрагменты вызова командной строки компилятора. Значение — JSON-массив элементов, указывающих упорядоченные фрагменты. Каждый элемент — JSON-объект с одним членом:

fragment

Строка, определяющая фрагмент вызова командной строки компиляции. Значение закодировано в формате оболочки системной сборки.

includes

Дополнительный член, присутствующий, когда имеются каталоги включения. Значение — JSON-массив с элементом для каждого каталога. Каждый элемент — JSON-объект с членами:

path

Строка, определяющая путь к каталогу включения, представленный с помощью слешей.

isSystem

Дополнительный член, присутствующий со значением булевого типа true, если каталог включения помечен как системный.

backtrace

Дополнительный член, присутствующий, когда доступен обратный след CMake языка к вызову target_include_directories() или другой команде, добавившей этот каталог включения. Значение — целое беззнаковое 0-базовое целое число, индекс в массиве члена backtraceGraph nodes.

defines

Дополнительный член, присутствующий, когда имеются определения препроцессора. Значение — JSON-массив с элементом для каждого определения. Каждый элемент — JSON-объект с членами:

define

Строка, определяющая определение препроцессора в формате <name>[=<value>], например, DEF или DEF=1.

backtrace

Дополнительный член, присутствующий, когда доступен обратный след CMake языка к вызову target_compile_definitions() или другой команде, добавившей это определение препроцессора. Значение — целое беззнаковое 0-базовое целое число, индекс в массиве члена backtraceGraph nodes.

sysroot

Дополнительный член, присутствующий, когда переменная CMAKE_SYSROOT_COMPILE или CMAKE_SYSROOT определена. Значение — JSON-объект с одним членом:

path

Строка, определяющая абсолютный путь к sysroot, представленный с помощью слешей.

backtraceGraph

JSON-объект, описывающий граф обратных следов, узлы которых ссылаются на члены backtrace в других местах. Члены:

nodes

JSON-массив, перечисляющий узлы в графе обратного следа. Каждый элемент — JSON-объект с членами:

file

Целое беззнаковое 0-базовое целое число, индекс в массиве обратного следа files.

line

Дополнительный член, присутствующий, когда узел представляет строку в файле. Значение — целое беззнаковое 1-базовое число строки.

command

Дополнительный член, присутствующий, когда узел представляет вызов команды в файле. Значение — целое беззнаковое 0-базовое целое число, индекс в массиве обратного следа commands.

parent

Дополнительный член, присутствующий, когда узел не является нижней частью стека вызовов. Значение — целое беззнаковое 0-базовое целое число, индекс другого элемента в массиве обратного следа nodes.

commands

JSON-массив, перечисляющий имена команд, на которые ссылаются узлы обратного следа. Каждый элемент — строка, определяющая имя команды.

files

JSON-массив, перечисляющий файлы языка CMake, на которые ссылаются узлы обратного следа. Каждый элемент — строка, определяющая путь к файлу, представленный с помощью слешей. Если файл находится в каталоге верхнего уровня исходного кода, путь указывается относительно этого каталога. В противном случае путь является абсолютным.

Тип объекта "cache"

Объект типа cache перечисляет записи кэша. Это переменные переменные, хранящиеся в постоянном кэше (CMakeCache.txt) для дерева сборки.

Существует только одна основная версия объекта cache, версия 2. Версии 1 не существует, чтобы избежать путаницы с версией из режима cmake-server(7).

“cache” версия 2

Объект cache версии 2 — это JSON-объект:

{
  "kind": "cache",
  "version": { "major": 2, "minor": 0 },
  "entries": [
    {
      "name": "BUILD_SHARED_LIBS",
      "value": "ON",
      "type": "BOOL",
      "properties": [
        {
          "name": "HELPSTRING",
          "value": "Build shared libraries"
        }
      ]
    },
    {
      "name": "CMAKE_GENERATOR",
      "value": "Unix Makefiles",
      "type": "INTERNAL",
      "properties": [
        {
          "name": "HELPSTRING",
          "value": "Name of generator."
        }
      ]
    }
  ]
}

Члены, специфичные для объектов cache, являются:

entries

JSON-массив, элементы которого — JSON-объекты, определяющие запись кэша. Члены каждого элемента:

name

Строка, определяющая имя записи.

value

Строка, определяющая значение записи.

type

Строка, определяющая тип записи, используемый cmake-gui(1) для выбора виджета редактирования.

properties

JSON-массив, определяющий связанные свойства записи кэша. Каждый элемент — JSON-объект, содержащий члены:

name

Строка, определяющая имя свойства записи кэша.

value

Строка, определяющая значение свойства записи кэша.

Тип объекта “cmakeFiles”

Объект типа cmakeFiles перечисляет файлы, используемые CMake при конфигурировании и генерации системы сборки. Это включает файлы CMakeLists.txt а также включенные файлы .cmake.

Существует только одна основная версия объекта cmakeFiles, версия 1.

“cmakeFiles” версия 1

Объект cmakeFiles версии 1 — это JSON-объект:

{
  "kind": "cmakeFiles",
  "version": { "major": 1, "minor": 0 },
  "paths": {
    "build": "/path/to/top-level-build-dir",
    "source": "/path/to/top-level-source-dir"
  },
  "inputs": [
    {
      "path": "CMakeLists.txt"
    },
    {
      "isGenerated": true,
      "path": "/path/to/top-level-build-dir/.../CMakeSystem.cmake"
    },
    {
      "isExternal": true,
      "path": "/path/to/external/third-party/module.cmake"
    },
    {
      "isCMake": true,
      "isExternal": true,
      "path": "/path/to/cmake/Modules/CMakeGenericSystem.cmake"
    }
  ]
}

Члены, специфичные для объектов cmakeFiles, следующие:

paths

JSON-объект, содержащий члены:

source

Строка, определяющая абсолютный путь к каталогу верхнего уровня исходного кода, представленный с помощью слешей.

build

Строка, определяющая абсолютный путь к каталогу верхнего уровня сборки, представленный с помощью слешей.

inputs

JSON-массив, элементы которого — JSON-объекты, определяющие входной файл, используемый CMake при конфигурировании и генерации системы сборки. Члены каждого элемента:

path

Строка, определяющая путь к входному файлу CMake, представленный с помощью слешей. Если файл находится в каталоге верхнего уровня исходного кода, путь указывается относительно этого каталога. В противном случае путь является абсолютным.

isGenerated

Дополнительный член, присутствующий со значением булевого типа true, если путь указывает на файл, находящийся в каталоге верхнего уровня сборки, и сборка выполняется вне исходного кода. Этот член недоступен при внутриисходной сборке.

isExternal

Дополнительный член, присутствующий со значением булевого типа true, если путь указывает на файл, не находящийся в каталогах верхнего уровня исходного кода или сборки.

isCMake

Дополнительный член, присутствующий со значением булевого типа true, если путь указывает на файл в установке CMake.

© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.15/manual/cmake-file-api.7.html

Spec-Zone.ru

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