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/в любой момент и отслеживать его на появление нового файла индекса ответов.
Добавлен в версии 3.31: Пользователи могут добавить файлы запросов в api/v1/query внутри CMAKE_CONFIG_DIR для создания запросов на уровне пользователя для всех проектов CMake.
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
Объект версии 2 codemodel — это объект 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.
Этот поле был добавлен в версии 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.
-
Объект «каталог» «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. Значение — список строк с базовыми каталогами набора файлов (определёнными 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 языка до команды в исходном коде, которая создала целевой объект. Значение представляет собой целое без знака, индекс с нуля в массиве элемента
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.
-
-
-
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()или другой команды, которая создала эту зависимость. Значение — целое без знака, индекс с нуля в массиве элементаbacktraceGraph.
-
-
fileSets -
JSON-массив записей, соответствующих наборам файлов целевого объекта. Каждая запись — JSON-объект с элементами:
-
name -
Строка, определяющая имя набора файлов.
-
type -
Строка, определяющая тип набора файлов. См.
target_sources()поддерживаемые типы наборов файлов. -
visibility -
Строка, определяющая видимость набора файлов; одно из
PUBLIC,PRIVATE, илиINTERFACE. -
baseDirectories -
JSON-массив строк, каждая из которых определяет базовый каталог, содержащий исходные файлы в наборе файлов. Если каталог находится внутри каталога исходных файлов верхнего уровня, путь указывается относительно этого каталога. В противном случае путь является абсолютным.
Этот элемент был добавлен в версии codemodel 2.5.
-
-
sources
-
Массив JSON-записей, соответствующих исходным файлам целевого объекта. Каждая запись — объект JSON со следующими членами:
-
path -
Строка, определяющая путь к исходному файлу на диске, представленный с помощью слешей. Если файл находится в каталоге верхнего уровня исходных файлов, путь указывается относительно этого каталога. В противном случае путь является абсолютным.
-
compileGroupIndex -
Необязательный член, присутствующий при компиляции исходного кода. Значение — целое без знака, индекс в массиве
compileGroups, начиная с 0. -
sourceGroupIndex -
Необязательный член, присутствующий, когда исходный код является частью группы исходных файлов, либо через команду
source_group(), либо по умолчанию. Значение — целое без знака, индекс в массивеsourceGroups, начиная с 0. -
isGenerated -
Необязательный член, присутствующий со значением булевого типа
true, если исходный код являетсяGENERATED. -
fileSetIndex -
Необязательный член, присутствующий, когда исходный код входит в набор файлов. Значение — целое без знака, индекс в массиве
fileSets, начиная с 0.Это поле было добавлено в версии codemodel 2.5.
-
backtrace -
Необязательный член, присутствующий, когда доступен обратный отслеживающий путь CMake языка к команде
target_sources(),add_executable(),add_library(),add_custom_target()или другой команде, добавившей этот исходный код в целевой объект. Значение — целое без знака, индекс в массивеbacktraceGraphчленаnodes, начиная с 0.
-
-
sourceGroups -
Необязательный член, присутствующий, когда исходные коды сгруппированы командой
source_group()или по умолчанию. Значение — массив JSON-записей, соответствующих группам. Каждая запись — объект JSON со следующими членами:-
name -
Строка, определяющая имя группы исходных файлов.
-
sourceIndexes -
Массив JSON, содержащий список исходных файлов, принадлежащих группе. Каждая запись — целое без знака, индекс в главном массиве
sourcesцелевого объекта, начиная с 0.
-
-
compileGroups -
Необязательный член, присутствующий, когда целевой объект имеет исходные файлы, подлежащие компиляции. Значение — массив JSON-записей, соответствующих группам исходных файлов, которые компилируются с одинаковыми настройками. Каждая запись — объект JSON со следующими членами:
-
sourceIndexes -
Массив JSON, содержащий список исходных файлов, принадлежащих группе. Каждая запись — целое без знака, индекс в главном массиве
sourcesцелевого объекта, начиная с 0. -
language -
Строка, определяющая язык (например,
C,CXX,Fortran) используемой компиляционной цепочки для компиляции исходного файла. -
languageStandard -
Необязательный член, присутствующий при явном задании стандарта языка (например, через
CXX_STANDARD) или неявном задании через особенности компиляции. Каждая запись — объект JSON с двумя членами:-
backtraces -
Необязательный член, присутствующий, когда доступен обратный отслеживающий путь CMake языка к настройке
<LANG>_STANDARD. Если стандарт языка задан неявно особенностями компиляции, эти особенности используются в качестве обратного отслеживания. Возможны несколько особенностей компиляции, требующих одного и того же стандарта языка, поэтому может быть несколько обратных отслеживаний. Значение — массив JSON, каждая запись которого — целое без знака, индекс в массивеbacktraceGraphчленаnodes, начиная с 0. -
standard -
Строка, представляющая стандарт языка.
Это поле было добавлено в версии codemodel 2.2.
-
-
compileCommandFragments -
Необязательный член, присутствующий, когда доступны фрагменты вызова компилятора. Значение — массив JSON-записей, задающих упорядоченные фрагменты. Каждая запись — объект JSON с одним членом:
-
fragment -
Строка, определяющая фрагмент вызова компилятора. Значение закодировано в формате оболочки системы построения.
-
-
includes -
Необязательный член, присутствующий при наличии каталогов включаемых файлов. Значение — массив JSON с записью для каждого каталога. Каждая запись — объект JSON со следующими членами:
-
path -
Строка, определяющая путь к каталогу включаемых файлов, представленный с помощью слешей.
-
isSystem -
Необязательный член, присутствующий со значением булевого типа
true, если каталог включаемых файлов помечен как системный. -
backtrace -
Необязательный член, присутствующий, когда доступен обратный отслеживающий путь CMake языка к команде
target_include_directories()или другой команде, добавившей этот каталог включаемых файлов. Значение — целое без знака, индекс в массивеbacktraceGraphчленаnodes, начиная с 0.
-
-
frameworks -
Необязательный член, присутствующий, если на платформах Apple существуют фреймворки. Значение — массив JSON с записью для каждого фреймворка. Каждая запись — объект JSON со следующими членами:
-
path -
Строка, определяющая путь к каталогу фреймворка, представленный с помощью слешей.
-
isSystem -
Необязательный член, присутствующий со значением булевого типа
true, если фреймворк помечен как системный. -
backtrace -
Необязательный член, присутствующий, когда доступен обратный отслеживающий путь CMake языка к команде
target_link_libraries()или другой команде, добавившей этот фреймворк. Значение — целое без знака, индекс в массивеbacktraceGraphчленаnodes, начиная с 0.
Это поле было добавлено в версии codemodel 2.6.
-
-
precompileHeaders -
Необязательный член, присутствующий, когда
target_precompile_headers()или другие команды устанавливают значениеPRECOMPILE_HEADERSдля целевого объекта. Значение — массив JSON с записью для каждого заголовка. Каждая запись — объект JSON со следующими членами:-
header -
Полный путь к предварительно скомпилированному файлу заголовка.
-
backtrace -
Необязательный член, присутствующий, когда доступен обратный отслеживающий путь CMake языка к команде
target_precompile_headers()или другой команде, добавившей этот предварительно скомпилированный заголовок. Значение — целое без знака, индекс в массивеbacktraceGraphчленаnodes, начиная с 0.
Это поле было добавлено в версии codemodel 2.1.
-
-
defines -
Необязательный член, присутствующий при наличии предварительно определений препроцессора. Значение — массив JSON с записью для каждого определения. Каждая запись — объект JSON со следующими членами:
-
define -
Строка, определяющая предварительное определение препроцессора в формате
<name>[=<value>], напримерDEFилиDEF=1. -
backtrace -
Необязательный член, присутствующий, когда доступен обратный отслеживающий путь CMake языка к команде
target_compile_definitions()или другой команде, добавившей это предварительное определение препроцессора. Значение — целое без знака, индекс в массивеbacktraceGraphчленаnodes, начиная с 0.
-
-
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 -
Беззнаковое целое число — индекс с нуля в массиве трассировки обратного вызова
files. -
line -
Необязательный член, присутствующий, когда узел представляет строку в файле. Значение — беззнаковое целое число, номер строки (с 1).
-
command -
Необязательный член, присутствующий, когда узел представляет вызов команды в файле. Значение — беззнаковое целое число, индекс с нуля в массиве трассировки обратного вызова
commands. -
parent -
Необязательный член, присутствующий, когда узел не является нижней частью стека вызовов. Значение — беззнаковое целое число, индекс с нуля другого элемента в массиве трассировки обратного вызова
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, элементы которого представляют собой 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": 1 },
"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"
}
],
"globsDependent": [
{
"expression": "src/*.cxx",
"recurse": true,
"files": [
"src/foo.cxx",
"src/bar.cxx"
]
}
]
}
Члены, специфичные для объектов cmakeFiles, включают:
-
paths -
Объект JSON, содержащий члены:
-
source -
Строка, определяющая абсолютный путь к директории исходного кода верхнего уровня с использованием слэшей.
-
build -
Строка, определяющая абсолютный путь к директории сборки верхнего уровня с использованием слэшей.
-
-
inputs -
Массив JSON, элементы которого представляют собой объекты JSON, определяющие входной файл, используемый CMake при конфигурировании и генерации системы сборки. Члены каждого элемента включают:
-
path -
Строка, определяющая путь к входному файлу CMake с использованием слэшей. Если файл находится в директории исходного кода верхнего уровня, путь указывается относительно этой директории. В противном случае путь является абсолютным.
-
isGenerated -
Необязательный член, присутствующий с логическим значением
true, если путь указывает на файл, находящийся в директории сборки верхнего уровня, а сборка выполняется вне исходного кода. Этот член недоступен при сборке в исходном коде. -
isExternal -
Необязательный член, присутствующий с логическим значением
true, если путь указывает на файл, не находящийся в директориях исходного кода или сборки верхнего уровня. -
isCMake -
Необязательный член, присутствующий с логическим значением
true, если путь указывает на файл в установке CMake.
-
-
globsDependent -
Необязательный член, присутствующий, когда проект вызывает
file(GLOB)илиfile(GLOB_RECURSE)с опциейCONFIGURE_DEPENDS. Значение — массив JSON из объектов JSON, каждый из которых определяет выражение подстановки и список путей, которые оно сопоставило. Если выражение подстановки больше не соответствует тому же списку путей, CMake считает систему сборки устаревшей.Это поле было добавлено в
cmakeFilesверсии 1.1.Члены каждого элемента включают:
-
expression -
Строка, определяющая выражение подстановки.
-
recurse -
Необязательный член, присутствующий с логическим значением
true, если запись соответствует вызовуfile(GLOB_RECURSE). В противном случае запись соответствует вызовуfile(GLOB). -
listDirectories -
Необязательный член, присутствующий с логическим значением
true, еслиfile(GLOB)был вызван безLIST_DIRECTORIES falseилиfile(GLOB_RECURSE)был вызван сLIST_DIRECTORIES true. -
followSymlinks -
Необязательный член, присутствующий с логическим значением
true, еслиfile(GLOB)был вызван с опциейFOLLOW_SYMLINKS. -
relative -
Необязательный член, присутствующий, если
file(GLOB)был вызван с опциейRELATIVE <path>. Значение — строка, содержащая<path>заданное. -
paths -
Массив JSON строк, определяющих пути, сопоставленные вызовом
file(GLOB)илиfile(GLOB_RECURSE).
-
Тип объекта "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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/manual/cmake-file-api.7.html