cmake-file-api(7)
Введение
CMake предоставляет API на основе файлов, которое клиенты могут использовать для получения семантической информации о системах сборки, генерируемых CMake. Клиенты могут использовать API, написав файлы запросов в определённом месте в дереве сборки, чтобы запросить один или несколько типов объектов. При генерации системы сборки в этом дереве CMake будет читать файлы запросов и записывать файлы ответов для чтения клиентом.
API на основе файлов использует директорию <build>/.cmake/api/ в верхней части дерева сборки. API имеет версионность, чтобы поддерживать изменения в структуре файлов внутри каталога API. Версионность API файлов не зависит от версионности типов объектов, используемых в ответах. Эта версия CMake поддерживает только одну версию API, API v1.
Новое в версии 3.27: Проекты также могут отправлять запросы на текущий запуск, используя команду cmake_file_api().
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 на соответствующий файл ответа для запрошенного типа объекта и выбранной версии.
- JSON-объект с единственным членом
-
-
-
После прочтения файла индекса ответа клиенты могут прочитать другие файлы ответов 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": 7 },
"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 -
Необязательный член, присутствующий, когда директория не является корневой. Значение — целое без знака, 0-индексированное, индекс другой записи в главном массиве
directories, которая соответствует родительской директории, добавившей эту директорию как поддиректорию. -
childIndexes -
Необязательный член, присутствующий, когда директория имеет поддиректории. Значение — массив JSON, содержащий записи, соответствующие поддиректориям, созданным командой
add_subdirectory()илиsubdirs(). Каждая запись — целое без знака, 0-индексированное, индекс другой записи в главном массивеdirectories. -
projectIndex -
Целое без знака, 0-индексированное, индекс в главном массиве
projects, указывающий на проект системы билда, которому принадлежит эта директория. -
targetIndexes -
Необязательный член, присутствующий, когда сама директория имеет цели, исключая те, что принадлежат поддиректориям. Значение — массив JSON, содержащий записи, соответствующие целям. Каждая запись — целое без знака, 0-индексированное, индекс в главном массиве
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 «directory».
Этот поле был добавлен в версии 2.3 codemodel.
-
-
projects -
Массив JSON, содержащий записи, соответствующие главному проекту и подпроектам, определённым в системе билда. Каждый (под-)проект соответствует директории исходных файлов, чей файл
CMakeLists.txtвызывает командуproject()с именем проекта, отличным от имени родительской директории. Первая запись соответствует главному проекту.Каждая запись — это объект JSON, содержащий члены:
-
name -
Строка, определяющая имя, заданное командой
project(). -
parentIndex -
Необязательный член, присутствующий, когда проект не является главным. Значение — целое без знака, 0-индексированное, индекс другой записи в главном массиве
projects, соответствующей родительскому проекту, добавившему этот проект как подпроект. -
childIndexes -
Необязательный член, присутствующий, когда проект имеет подпроекты. Значение — массив JSON, содержащий записи, соответствующие подпроектам. Каждая запись — целое без знака, 0-индексированное, индекс другой записи в главном массиве
projects. -
directoryIndexes -
Массив JSON, содержащий записи, соответствующие директориям системы билда, которые являются частью проекта. Первая запись соответствует корневой директории проекта. Каждая запись — целое без знака, 0-индексированное, индекс в главном массиве
directories. -
targetIndexes -
Необязательный член, присутствующий, когда сам проект имеет цели, исключая те, что принадлежат подпроектам. Значение — массив JSON, содержащий записи, соответствующие целям. Каждая запись — целое без знака, 0-индексированное, индекс в главном массиве
targets.
-
-
targets -
Массив JSON, содержащий записи, соответствующие целям системы билда. Такие цели создаются вызовами
add_executable(),add_library()иadd_custom_target(), исключая импортированные цели и интерфейсные библиотеки (которые не генерируют правила билда). Каждая запись — объект JSON, содержащий члены:-
name -
Строка, определяющая имя цели.
-
id -
Строка, однозначно идентифицирующая цель. Совпадает с полем
idв файле, на который ссылаетсяjsonFile. -
directoryIndex -
Целое без знака, 0-индексированное, индекс в главном массиве
directories, указывающий на директорию системы билда, в которой определена цель. -
projectIndex -
Целое без знака, 0-индексированное, индекс в главном массиве
projects, указывающий на проект системы билда, в котором определена цель. -
jsonFile -
Строка JSON, определяющая путь относительно файла codemodel к другому файлу JSON, содержащему объект «codemodel» версии 2 «target».
-
-
Объект "codemodel" версии 2 "directory"
Объект "directory" codemodel ссылается на массив directories объекта «codemodel» версии 2. Каждый объект "directory" — это объект 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, и установщик предназначен для файла библиотеки импорта Windows DLL или файла импорта линковщика 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. Значение — список строк с базовыми каталогами набора файлов (определёнными genex-оценкой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 ссылается на массив targets объекта «codemodel» версии 2. Каждый объект «target» — это JSON-объект с членами:
-
name -
Строка, определяющая логическое имя целевого объекта.
-
id -
Уникальная строка, идентифицирующая целевой объект. Формат не определён и не должен интерпретироваться клиентами.
-
type -
Строка, определяющая тип целевого объекта. Значение должно быть одним из
EXECUTABLE,STATIC_LIBRARY,SHARED_LIBRARY,MODULE_LIBRARY,OBJECT_LIBRARY,INTERFACE_LIBRARY, илиUTILITY. -
backtrace -
Необязательный член, присутствующий, когда доступна трассировка CMake языка до команды в исходном коде, создавшей целевой объект. Значение — это беззнаковое целое число, 0-основанный индекс в массиве члена
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(), указавшей этот путь назначения. Значение — беззнаковое целое число, 0-основанный индекс в массиве членаbacktraceGraphи его элементаnodes.
-
-
-
launchers -
Необязательный член, присутствующий на целевых объектах исполняемых файлов, у которых указан хотя бы один запуск, указанный проектом. Значение — JSON-массив записей, соответствующих указанным запускам. Каждая запись — это JSON-объект с членами:
-
command -
Строка, определяющая путь к запускаемому файлу на диске, представленный с использованием слэшей. Если файл находится внутри каталога исходных кодов верхнего уровня, путь указывается относительно этого каталога.
-
arguments -
Необязательный член, присутствующий, когда команда запуска имеет аргументы, предшествующие исполняемому файлу, который нужно запустить. Значение — JSON-массив строк, представляющих аргументы.
-
type -
Строка, определяющая тип запускаемого файла. Значение должно быть одним из следующих:
-
emulator -
Эмулятор для целевой платформы при кросс-компиляции. См. свойство целевого объекта
CROSSCOMPILING_EMULATOR. -
test -
Программа запуска для выполнения тестов. См. свойство целевого объекта
TEST_LAUNCHER.
-
Этот элемент был добавлен в версии codemodel 2.7.
-
-
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()или другой команды, создавшей эту зависимость. Значение — беззнаковое целое число, 0-основанный индекс в массиве членаbacktraceGraphи его элементаnodes.
-
-
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 -
Необязательный член, присутствующий со значением булевого типа
true, если исходный код являетсяGENERATED. -
fileSetIndex -
Необязательный член, присутствующий, когда исходный код входит в набор файлов. Значение — это целое число без знака, 0-основанный индекс в массиве
fileSets.Это поле было добавлено в версии codemodel 2.5.
-
backtrace -
Необязательный член, присутствующий, когда трассировка обратного вызова CMake языка к команде
target_sources(),add_executable(),add_library(),add_custom_target(), или к вызову другой команды, добавившей этот исходный код к целевому объекту, доступна. Значение — целое число без знака, 0-основанный индекс в массивеnodesчленаbacktraceGraph.
-
-
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-основанный индекс в массивеnodesчленаbacktraceGraph. -
standard -
Строка, представляющая стандарт языка.
Это поле было добавлено в версии codemodel 2.2.
-
-
compileCommandFragments -
Необязательный член, присутствующий, когда фрагменты вызова компилятора доступны. Значение — JSON-массив, содержащий упорядоченные фрагменты. Каждая запись — JSON-объект с одним членом:
-
fragment -
Строка, определяющая фрагмент вызова компилятора. Значение закодировано в формате оболочки исходной системы построения.
-
-
includes -
Необязательный член, присутствующий при наличии каталогов включения. Значение — JSON-массив со записью для каждого каталога. Каждая запись — JSON-объект с членами:
-
path -
Строка, определяющая путь к каталогу включения, представленный с помощью слешей.
-
isSystem -
Необязательный член, присутствующий со значением булевого типа
true, если каталог включения помечен как системный каталог включения. -
backtrace -
Необязательный член, присутствующий, когда трассировка обратного вызова CMake языка к команде
target_include_directories()или к вызову другой команды, добавившей этот каталог включения, доступна. Значение — это целое число без знака, 0-основанный индекс в массивеnodesчленаbacktraceGraph.
-
-
frameworks -
Необязательный член, присутствующий, когда на платформах Apple есть фреймворки. Значение — JSON-массив со записью для каждого фреймворка. Каждая запись — JSON-объект с членами:
-
path -
Строка, определяющая путь к каталогу фреймворка, представленный с помощью слешей.
-
isSystem -
Необязательный член, присутствующий со значением булевого типа
true, если фреймворк помечен как системный. -
backtrace -
Необязательный член, присутствующий, когда трассировка обратного вызова CMake языка к команде
target_link_libraries()или к вызову другой команды, добавившей этот фреймворк, доступна. Значение — целое число без знака, 0-основанный индекс в массивеnodesчленаbacktraceGraph.
Это поле было добавлено в версии codemodel 2.6.
-
-
precompileHeaders -
Необязательный член, присутствующий, когда команда
target_precompile_headers()или другие вызовы команд установилиPRECOMPILE_HEADERSдля целевого объекта. Значение — JSON-массив со записью для каждого заголовочного файла. Каждая запись — JSON-объект с членами:-
header -
Полный путь к предварительно скомпилированному заголовочному файлу.
-
backtrace -
Необязательный член, присутствующий, когда трассировка обратного вызова CMake языка к команде
target_precompile_headers()или к вызову другой команды, добавившей этот предварительно скомпилированный заголовочный файл, доступна. Значение — целое число без знака, 0-основанный индекс в массивеnodesчленаbacktraceGraph.
Это поле было добавлено в версии codemodel 2.1.
-
-
defines -
Необязательный член, присутствующий при наличии определений препроцессора. Значение — JSON-массив со записью для каждого определения. Каждая запись — JSON-объект с членами:
-
define -
Строка, определяющая определение препроцессора в формате
<name>[=<value>], например,DEFилиDEF=1. -
backtrace -
Необязательный член, присутствующий, когда трассировка обратного вызова CMake языка к команде
target_compile_definitions()или к вызову другой команды, добавившей это определение препроцессора, доступна. Значение — целое число без знака, 0-основанный индекс в массивеnodesчленаbacktraceGraph.
-
-
sysroot -
Необязательный член, присутствующий, когда переменная
CMAKE_SYSROOT_COMPILEилиCMAKE_SYSROOTопределена. Значение — JSON-объект с одним членом:-
path -
Строка, определяющая абсолютный путь к sysroot, представленный с помощью слешей.
-
-
-
backtraceGraph -
Граф трассировки обратного вызова "codemodel" версии 2, узлы которого ссылаются на члены
backtraceв другом месте этого объекта "target".
Граф трассировки обратного вызова "codemodel" версии 2
Член backtraceGraph объекта "codemodel" версии 2 "каталог" или "codemodel" версии 2 "целевой объект" — это 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
Версия 1 объекта configureLog — это объект 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, чьи элементы — это JSON-строки, называющие один из версионированных типов событий
cmake-configure-log(7). Будет указана только одна версия каждого типа события журнала настройки. Хотя журнал настройки может содержать другие (версионированные) типы событий, клиенты должны игнорировать те, которые не указаны в этом поле.
Тип объекта "cache"
Тип объекта cache перечисляет записи кэша. Это переменные, хранящиеся в постоянном кэше (CMakeCache.txt) для дерева сборки.
Существует только одна основная версия объекта cache, версия 2. Версия 1 не существует, чтобы избежать путаницы с версией из режима cmake-server(7).
"cache" версия 2
Версия 2 объекта cache — это объект 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
Версия 1 объекта cmakeFiles — это объект 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
Версия 1 объекта toolchains — это объект 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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/manual/cmake-file-api.7.html