Spec-Zone.ru › CMake 3.26

cmake-file-api(7)

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

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

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

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

      • Версия "codemodel" 2
      • Объект "directory" версии "codemodel" 2
      • Объект "target" версии "codemodel" 2
      • Граф следов "backtrace" версии "codemodel" 2
    • Тип объекта "configureLog"

      • Версия "configureLog" 1
    • Тип объекта "cache"

      • Версия "cache" 2
    • Тип объекта "cmakeFiles"

      • Версия "cmakeFiles" 1
    • Тип объекта "toolchains"

      • Версия "toolchains" 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": {
      "multiConfig": false,
      "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, используемый для сборки. Он имеет члены:

multiConfig

Логическое значение, указывающее, поддерживает ли генератор несколько конфигураций вывода.

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": 5 },
  "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"
          },
          "jsonFile": "<file>"
        },
        {
          "source": "sub",
          "build": "sub",
          "parentIndex": 0,
          "projectIndex": 0,
          "targetIndexes": [ 1 ],
          "minimumCMakeVersion": {
            "string": "3.14"
          },
          "jsonFile": "<file>"
        }
      ],
      "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 или эквивалентное.

jsonFile

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

Этот поле был добавлен в версии 2.3 codemodel.

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, содержащему объект «цель» «codemodel» версии 2.

Объект «каталог» «codemodel» версии 2

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

paths

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

source

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

build

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

installers

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

component

Строка, определяющая компонент, выбранный вызовом соответствующей команды install().

destination

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

paths

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

  • Строка, определяющая путь, из которого файл или каталог подлежат установке. Часть пути, не предваряемая /, также определяет путь (имя), по которому файл или каталог будут установлены в рамках назначения.
  • Объект JSON с членами:

    from

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

    to

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

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

type

Строка, определяющая тип правила установки. Значение — одно из следующих, при этом некоторые варианты содержат дополнительные члены:

file

Вызов install(FILES) или install(PROGRAMS). Члены destination и paths заполнены, пути внутри верхнего каталога source выражены относительно него. Может присутствовать член isOptional. Этот тип дополнительных членов не имеет.

directory

Вызов install(DIRECTORY). Члены destination и paths заполнены, пути внутри верхнего каталога source выражены относительно него. Может присутствовать член isOptional. Этот тип дополнительных членов не имеет.

target

Вызов install(TARGETS). Члены destination и paths заполнены, пути внутри верхнего каталога build выражены относительно него. Может присутствовать член isOptional. Этот тип имеет дополнительные члены targetId, targetIndex, targetIsImportLibrary, и targetInstallNamelink.

export

Вызов install(EXPORT). Члены destination и paths заполнены, пути внутри верхнего каталога build выражены относительно него. Записи paths относятся к файлам, сгенерированным автоматически CMake для установки, и их фактические значения считаются частными деталями реализации. Этот тип имеет дополнительные члены exportName и exportTargets.

script

Вызов install(SCRIPT). Этот тип имеет дополнительный член scriptFile.

code

Вызов install(CODE). Этот тип дополнительных членов не имеет.

importedRuntimeArtifacts

Вызов install(IMPORTED_RUNTIME_ARTIFACTS). Заполнен член destination . Может присутствовать член isOptional. Этот тип дополнительных членов не имеет.

runtimeDependencySet

Вызов install(RUNTIME_DEPENDENCY_SET) или install(TARGETS) с RUNTIME_DEPENDENCIES. Заполнен член destination . Этот тип имеет дополнительные члены runtimeDependencySetName и runtimeDependencySetType.

fileSet

Вызов install(TARGETS) с FILE_SET. Заполнены члены destination и paths . Может присутствовать член isOptional . Этот тип имеет дополнительные члены fileSetName, fileSetType, fileSetDirectories, и fileSetTarget.

Этот тип был добавлен в версии codemodel 2.4.

isExcludeFromAll

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

isForAllComponents

Необязательный член, присутствующий со значением булевого типа true при вызове install(SCRIPT|CODE) с опцией ALL_COMPONENTS.

isOptional

Необязательный член, присутствующий со значением булевого типа true при вызове install() с опцией OPTIONAL . Разрешено, когда type равно file, directory, или target.

targetId

Необязательный член, присутствующий, когда type равно target . Значение — строка, уникально идентифицирующая целевой объект для установки. Соответствует члену id целевого объекта в массиве targets основного объекта «codemodel».

targetIndex

Необязательный член, присутствующий, когда type равно target . Значение — беззнаковое целое число, 0-основанный индекс в массиве targets основного объекта «codemodel» для целевого объекта для установки.

targetIsImportLibrary

Необязательный член, присутствующий, когда type равно target и установщик предназначен для файла библиотеки импорта DLL Windows или файла импорта компоновщика AIX. При наличии, значение — булево true.

targetInstallNamelink

Необязательный член, присутствующий, когда type равно target и установщик соответствует целевому объекту, который может использовать символические ссылки для реализации свойств целевых объектов VERSION и SOVERSION. Значение — строка, указывающая, как установщик должен обрабатывать символические ссылки: skip означает, что установщик должен пропустить символические ссылки и установить только фактический файл, а only означает, что установщик должен установить только символические ссылки и не устанавливать фактический файл. В любом случае член paths перечисляет, что фактически устанавливается.

exportName

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

exportTargets

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

id

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

index

Беззнаковое целое число, 0-основанный индекс в массиве targets основного объекта «codemodel» для целевого объекта.

runtimeDependencySetName

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

runtimeDependencySetType

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

library

Указывает, что этот установщик устанавливает зависимости, которые не являются macOS-фреймворками.

framework

Указывает, что этот установщик устанавливает зависимости, которые являются macOS-фреймворками.

fileSetName

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

Это поле было добавлено в версии codemodel 2.4.

fileSetType

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

Это поле было добавлено в версии codemodel 2.4.

fileSetDirectories

Дополнительный член, присутствующий, когда type является fileSet. Значение представляет собой список строк с базовыми каталогами набора файлов (определёнными путём генерации HEADER_DIRS или HEADER_DIRS_<NAME>).

Это поле было добавлено в версии codemodel 2.4.

fileSetTarget

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

id

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

index

Беззнаковое целое число, 0-основанный индекс в массиве targets основного объекта "codemodel" для целевого объекта.

Это поле было добавлено в версии codemodel 2.4.

scriptFile

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

backtrace

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

backtraceGraph

Граф отслеживания "codemodel" версии 2, узлы которого ссылаются на члены backtrace в других частях объекта "directory".

Объект "target" версии 2 "codemodel"

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

name

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

id

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

type

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

backtrace

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

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.

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.

fileSets

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

name

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

type

Строка, определяющая тип набора файлов. См. поддерживаемые типы наборов файлов в target_sources().

visibility

Строка, определяющая видимость набора файлов; один из PUBLIC, PRIVATE, или INTERFACE.

baseDirectories

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

Этот член был добавлен в версии codemodel 2.5.

sources

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

path

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

compileGroupIndex

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

sourceGroupIndex

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

isGenerated

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

fileSetIndex

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

Этот член был добавлен в версии codemodel 2.5.

backtrace

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

sourceGroups

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

name

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

sourceIndexes

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

compileGroups

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

sourceIndexes

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

language

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

languageStandard

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

backtraces

Необязательный член, присутствующий, когда доступен обратный отслеживаемый CMake-языковой трассировка для настройки <LANG>_STANDARD. Если стандарт языка задан неявно через особенности компиляции, они используются в качестве трассировок. Возможно, что несколько особенностей компиляции потребуют одного и того же стандарта языка, поэтому может быть несколько трассировок. Значение — JSON-массив, каждая запись которого — беззнаковое целое число, 0-основанный индекс в массиве backtraceGraph члена nodes.

standard

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

Этот член был добавлен в версии codemodel 2.2.

compileCommandFragments

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

fragment

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

includes

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

path

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

isSystem

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

backtrace

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

precompileHeaders

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

header

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

backtrace

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

Этот член был добавлен в версии codemodel 2.1.

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

"Граф отслеживаемых зависимостей" версии 2 codemodel, узлы которого ссылаются на члены backtrace в других частях объекта "target".

"Граф отслеживаемых зависимостей" версии 2 codemodel

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

nodes

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

file

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

line

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

command

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

parent

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

commands

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

files

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

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

Тип объекта configureLog описывает расположение и содержимое файла cmake-configure-log(7).

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

"configureLog" версия 1

configureLog объект версии 1 представляет собой объект JSON:

{
  "kind": "configureLog",
  "version": { "major": 1, "minor": 0 },
  "path": "/path/to/top-level-build-dir/CMakeFiles/CMakeConfigureLog.yaml",
  "eventKindNames": [ "try_compile-v1", "try_run-v1" ]
}

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

path

Строка, определяющая путь к файлу журнала конфигурации. Клиенты должны читать файл журнала по этому пути, который может отличаться от пути, описанного в cmake-configure-log(7). Файл журнала может отсутствовать, если события не регистрировались.

eventKindNames

Массив JSON, элементы которого представляют собой строки, именующие один из версионированных типов событий cmake-configure-log(7). В списке будет присутствовать не более одной версии каждого типа события журнала конфигурации. Хотя журнал конфигурации может содержать другие (версионированные) типы событий, клиенты должны игнорировать те, которые не указаны в этом поле.

Тип объекта "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.

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

Тип объекта toolchains перечисляет свойства используемых в процессе сборки систем компиляции. Это включает язык, путь к компилятору, идентификатор и версию.

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

"toolchains" версия 1

toolchains объект версии 1 представляет собой объект JSON:

{
  "kind": "toolchains",
  "version": { "major": 1, "minor": 0 },
  "toolchains": [
    {
      "language": "C",
      "compiler": {
        "path": "/usr/bin/cc",
        "id": "GNU",
        "version": "9.3.0",
        "implicit": {
          "includeDirectories": [
            "/usr/lib/gcc/x86_64-linux-gnu/9/include",
            "/usr/local/include",
            "/usr/include/x86_64-linux-gnu",
            "/usr/include"
          ],
          "linkDirectories": [
            "/usr/lib/gcc/x86_64-linux-gnu/9",
            "/usr/lib/x86_64-linux-gnu",
            "/usr/lib",
            "/lib/x86_64-linux-gnu",
            "/lib"
          ],
          "linkFrameworkDirectories": [],
          "linkLibraries": [ "gcc", "gcc_s", "c", "gcc", "gcc_s" ]
        }
      },
      "sourceFileExtensions": [ "c", "m" ]
    },
    {
      "language": "CXX",
      "compiler": {
        "path": "/usr/bin/c++",
        "id": "GNU",
        "version": "9.3.0",
        "implicit": {
          "includeDirectories": [
            "/usr/include/c++/9",
            "/usr/include/x86_64-linux-gnu/c++/9",
            "/usr/include/c++/9/backward",
            "/usr/lib/gcc/x86_64-linux-gnu/9/include",
            "/usr/local/include",
            "/usr/include/x86_64-linux-gnu",
            "/usr/include"
          ],
          "linkDirectories": [
            "/usr/lib/gcc/x86_64-linux-gnu/9",
            "/usr/lib/x86_64-linux-gnu",
            "/usr/lib",
            "/lib/x86_64-linux-gnu",
            "/lib"
          ],
          "linkFrameworkDirectories": [],
          "linkLibraries": [
            "stdc++", "m", "gcc_s", "gcc", "c", "gcc_s", "gcc"
          ]
        }
      },
      "sourceFileExtensions": [
        "C", "M", "c++", "cc", "cpp", "cxx", "mm", "CPP"
      ]
    }
  ]
}

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

toolchains

Массив JSON, элементы которого представляют собой объекты JSON, описывающие цепочку инструментов, связанную с определённым языком. Члены каждого элемента:

language

Строка JSON, определяющая язык цепочки инструментов, например, C или CXX. Имена языков совпадают с именами языков, которые могут быть переданы команде project(). Поскольку CMake поддерживает только одну цепочку инструментов на язык, это поле может использоваться в качестве ключа.

compiler

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

path

Необязательный член, присутствующий, когда переменная CMAKE_<LANG>_COMPILER определена для текущего языка. Его значение — строка JSON, содержащая путь к компилятору.

id

Необязательный член, присутствующий, когда переменная CMAKE_<LANG>_COMPILER_ID определена для текущего языка. Его значение — строка JSON, содержащая идентификатор (GNU, MSVC и т. д.) компилятора.

version

Необязательный член, присутствующий, когда переменная CMAKE_<LANG>_COMPILER_VERSION определена для текущего языка. Его значение — строка JSON, содержащая версию компилятора.

target

Необязательный член, присутствующий, когда переменная CMAKE_<LANG>_COMPILER_TARGET определена для текущего языка. Его значение — строка JSON, содержащая целевую систему для кросс-компиляции компилятора.

implicit

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

includeDirectories

Необязательный член, присутствующий, когда переменная CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES определена для текущего языка. Его значение — массив JSON из строк JSON, каждая из которых содержит путь к неявному каталогу включаемых файлов для компилятора.

linkDirectories

Необязательный член, присутствующий, когда переменная CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES определена для текущего языка. Его значение — массив JSON из строк JSON, каждая из которых содержит путь к неявному каталогу компоновки для компилятора.

linkFrameworkDirectories

Необязательный член, присутствующий, когда переменная CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES определена для текущего языка. Его значение — массив JSON из строк JSON, каждая из которых содержит путь к неявному каталогу компоновки фреймворков для компилятора.

linkLibraries

Необязательный член, присутствующий, когда переменная CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES определена для текущего языка. Его значение — массив JSON из строк JSON, каждая из которых содержит путь к неявному файлу компоновки для компилятора.

sourceFileExtensions

Необязательный член, присутствующий, когда переменная CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS определена для текущего языка. Его значение — массив JSON из строк JSON, где каждая строка содержит расширение файла (без ведущей точки) для языка.

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

Spec-Zone.ru

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