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
Объект версии 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 -
Необязательный член, присутствующий, когда каталог не является каталогом верхнего уровня. Значение — целое число без знака, индекс с нуля другой записи в главном массиве
directories, соответствующей родительскому каталогу, который добавил этот каталог как подкаталог. -
childIndexes -
Необязательный член, присутствующий, когда у каталога есть подкаталоги. Значение — массив JSON записей, соответствующих подкаталогам, созданным командами
add_subdirectory()илиsubdirs(). Каждая запись — целое число без знака, индекс с нуля другой записи в главном массивеdirectories. -
projectIndex -
Целое число без знака, индекс с нуля в главном массиве
projects, указывающий проект системы сборки, которому принадлежит этот каталог. -
targetIndexes -
Необязательный член, присутствующий, когда у каталога есть целевые объекты, за исключением тех, которые принадлежат подкаталогам. Значение — массив JSON записей, соответствующих целевым объектам. Каждая запись — целое число без знака, индекс с нуля в главном массиве
targets. -
minimumCMakeVersion -
Необязательный член, присутствующий, когда известна минимальная необходимая версия CMake для каталога. Это версия
<min>, заданная в самом последнем вызове командыcmake_minimum_required(VERSION)в каталоге или в одном из его предков. Значение — объект JSON с одним членом:-
string -
Строка, определяющая минимально необходимую версию в формате:
<major>.<minor>[.<patch>[.<tweak>]][<suffix>]
Каждый компонент — целое число без знака, а суффикс может быть любой строкой.
-
-
hasInstallRule -
Необязательный член, который присутствует со значением булевого типа
true, когда каталог или один из его подкаталогов содержит правилаinstall(), т.е. доступны правилаmake installили эквивалентные им. -
jsonFile -
Строка JSON, определяющая путь относительно файла codemodel к другому файлу JSON, содержащему объект «codemodel» версии 2 «каталог».
Этот поле был добавлен в версии codemodel 2.3.
-
-
projects -
Массив JSON записей, соответствующих проекту верхнего уровня и подпроектам, определённым в системе сборки. Каждый (под-)проект соответствует каталогу исходных файлов, в котором файл
CMakeLists.txtвызывает командуproject()с именем проекта, отличным от имени родительского каталога. Первая запись соответствует проекту верхнего уровня.Каждая запись — объект JSON, содержащий члены:
-
name -
Строка, определяющая имя, заданное команде
project(). -
parentIndex -
Необязательный член, присутствующий, когда проект не является проектом верхнего уровня. Значение — целое число без знака, индекс с нуля другой записи в главном массиве
projects, соответствующей родительскому проекту, который добавил этот проект как подпроект. -
childIndexes -
Необязательный член, присутствующий, когда у проекта есть подпроекты. Значение — массив JSON записей, соответствующих подпроектам. Каждая запись — целое число без знака, индекс с нуля другой записи в главном массиве
projects. -
directoryIndexes -
Массив JSON записей, соответствующих каталогам системы сборки, которые являются частью проекта. Первая запись соответствует каталогу верхнего уровня проекта. Каждая запись — целое число без знака, индекс с нуля в главном массиве
directories. -
targetIndexes -
Необязательный член, присутствующий, когда у проекта есть целевые объекты, за исключением тех, которые принадлежат подпроектам. Значение — массив JSON записей, соответствующих целевым объектам. Каждая запись — целое число без знака, индекс с нуля в главном массиве
targets.
-
-
targets -
Массив JSON записей, соответствующих целевым объектам системы сборки. Такие целевые объекты создаются вызовами
add_executable(),add_library()иadd_custom_target(), за исключением импортированных целевых объектов и интерфейсных библиотек (которые не генерируют никаких правил сборки). Каждая запись — объект JSON, содержащий члены:-
name -
Строка, определяющая имя целевого объекта.
-
id -
Строка, уникально идентифицирующая целевой объект. Она соответствует полю
idв файле, на который ссылаетсяjsonFile. -
directoryIndex -
Целое число без знака, индекс с нуля в главном массиве
directories, указывающий каталог системы сборки, в котором определён целевой объект. -
projectIndex -
Целое число без знака, индекс с нуля в главном массиве
projects, указывающий проект системы сборки, в котором определён целевой объект. -
jsonFile -
Строка JSON, определяющая путь относительно файла codemodel к другому файлу JSON, содержащему объект «codemodel» версии 2 «целевой объект».
-
-
Объект «каталог» версии 2 «codemodel»
Объект «каталог» 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в других местах этого объекта "каталог".
Объект "codemodel" версии 2 "target"
Объект "codemodel" "target" ссылается на массив 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.
-
Этот член был добавлен в версии 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 -
Строка, определяющая абсолютный путь к корневому каталогу, представленный с использованием слэшей.
-
-
-
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-базируемый индекс в массивеbacktraceGraphчленаnodes.
-
-
sourceGroups -
Необязательный член, присутствующий, когда исходные файлы сгруппированы командой
source_group()или по умолчанию. Значение — массив JSON записей, соответствующих группам. Каждая запись — объект JSON со следующими членами:-
name -
Строка, определяющая имя группы исходных файлов.
-
sourceIndexes -
Массив JSON, содержащий список исходных файлов, принадлежащих к группе. Каждая запись — целое без знака, 0-базируемый индекс в основном массиве
sourcesдля целевого объекта.
-
-
compileGroups
-
Необязательный член, присутствующий, когда у целевого объекта есть источники, которые компилируются. Значение — массив JSON с записями, соответствующими группам источников, которые все компилируются с одинаковыми настройками. Каждая запись — объект JSON с членами:
-
sourceIndexes -
Массив JSON, перечисляющий источники, принадлежащие группе. Каждая запись — индекс без знака, с нулевой базой, в главном массиве
sourcesдля целевого объекта. -
language -
Строка, определяющая язык (например,
C,CXX,Fortran), используемый компилятором для компиляции исходного файла. -
languageStandard -
Необязательный член, присутствующий, когда стандарт языка задан явно (например, через
CXX_STANDARD) или неявно функциями компиляции. Каждая запись — объект JSON с двумя членами:-
backtraces -
Необязательный член, присутствующий, когда доступен трассировочный след CMake языка до параметра
<LANG>_STANDARD. Если стандарт языка был задан неявно функциями компиляции, используются эти следы (или следы). Возможны несколько функций компиляции, требующих один и тот же стандарт языка, поэтому может быть несколько трассировочных следов. Значение — массив JSON, где каждая запись — индекс без знака, с нулевой базой, в массивеbacktraceGraphчленаnodes. -
standard -
Строка, представляющая стандарт языка.
Этот член был добавлен в версии codemodel 2.2.
-
-
compileCommandFragments -
Необязательный член, присутствующий, когда доступны фрагменты вызова компилятора. Значение — массив JSON с записями, определяющими упорядоченные фрагменты. Каждая запись — объект JSON с одним членом:
-
fragment -
Строка, определяющая фрагмент вызова компилятора. Значение закодировано в формате оболочки, используемой в системе сборки.
-
-
includes -
Необязательный член, присутствующий, когда есть каталоги заголовочных файлов. Значение — массив JSON с записью для каждого каталога. Каждая запись — объект JSON с членами:
-
path -
Строка, определяющая путь к каталогу заголовочных файлов, представленный с использованием слешей.
-
isSystem -
Необязательный член, присутствующий с булевым значением
true, если каталог заголовочных файлов помечен как системный каталог заголовочных файлов. -
backtrace -
Необязательный член, присутствующий, когда доступен трассировочный след CMake языка до вызова
target_include_directories()или другого вызова, добавившего этот каталог заголовочных файлов. Значение — индекс без знака, с нулевой базой, в массивеbacktraceGraphчленаnodes.
-
-
frameworks -
Необязательный член, присутствующий, когда на платформах Apple есть фреймворки. Значение — массив JSON с записью для каждого каталога. Каждая запись — объект JSON с членами:
-
path -
Строка, определяющая путь к каталогу фреймворка, представленный с использованием слешей.
-
isSystem -
Необязательный член, присутствующий с булевым значением
true, если фреймворк помечен как системный. -
backtrace -
Необязательный член, присутствующий, когда доступен трассировочный след CMake языка до вызова
target_link_libraries()или другого вызова, добавившего этот фреймворк. Значение — индекс без знака, с нулевой базой, в массивеbacktraceGraphчленаnodes.
Этот член был добавлен в версии codemodel 2.6.
-
-
precompileHeaders -
Необязательный член, присутствующий, когда
target_precompile_headers()или другие вызовы устанавливаютPRECOMPILE_HEADERSдля целевого объекта. Значение — массив JSON с записью для каждого заголовочного файла. Каждая запись — объект JSON с членами:-
header -
Полный путь к предварительно скомпилированному заголовочному файлу.
-
backtrace -
Необязательный член, присутствующий, когда доступен трассировочный след CMake языка до вызова
target_precompile_headers()или другого вызова, добавившего этот предварительно скомпилированный заголовочный файл. Значение — индекс без знака, с нулевой базой, в массивеbacktraceGraphчленаnodes.
Этот член был добавлен в версии codemodel 2.1.
-
-
defines -
Необязательный член, присутствующий, когда есть определения препроцессора. Значение — массив JSON с записью для каждого определения. Каждая запись — объект JSON с членами:
-
define -
Строка, определяющая определение препроцессора в формате
<name>[=<value>], напримерDEFилиDEF=1. -
backtrace -
Необязательный член, присутствующий, когда доступен трассировочный след CMake языка до вызова
target_compile_definitions()или другого вызова, добавившего это определение препроцессора. Значение — индекс без знака, с нулевой базой, в массивеbacktraceGraphчленаnodes.
-
-
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 -
Необязательный член, присутствующий, когда узел представляет строку в файле. Значение — целое число, указывающее номер строки, с единичной базой.
-
command -
Необязательный член, присутствующий, когда узел представляет вызов команды в файле. Значение — индекс без знака, с нулевой базой, в массиве следов
commands. -
parent -
Необязательный член, присутствующий, когда узел не является нижним уровнем стека вызовов. Значение — индекс без знака, с нулевой базой, другого элемента в массиве следов
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
Объект 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 считает систему сборки устаревшей.Это поле было добавлено в версию
cmakeFiles1.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.30/manual/cmake-file-api.7.html