cmake-file-api(7)
Введение
CMake предоставляет файловый API, который клиенты могут использовать для получения семантической информации о системах построения, которые генерирует CMake. Клиенты могут использовать API, записывая файлы запросов в определённом месте в дереве сборки, чтобы запросить ноль или более типов объектов. Когда CMake генерирует систему сборки в этом дереве, он будет читать файлы запросов и записывать файлы ответов для чтения клиентом.
Файловый API использует директорию <build>/.cmake/api/ в верхней части дерева сборки. API имеет версионирование, чтобы поддерживать изменения в расположении файлов в каталоге API. Версионирование файлов API ортогонально версированию типов объектов, используемых в ответах. Эта версия CMake поддерживает только одну версию API, API v1.
API v1
API v1 находится в каталоге <build>/.cmake/api/v1/. Он имеет следующие подкаталоги:
-
query/ -
Содержит файлы запросов, написанные клиентами. Они могут быть v1 Общими бессостоятельными запросами файлов, v1 Бессостоятельными запросами файлов клиента или v1 Состоятельными запросами файлов клиента.
-
reply/ -
Содержит файлы ответов, записанные CMake при запуске для генерации системы сборки. Они индексируются файлом v1 файла индекса ответов, который может ссылаться на дополнительные v1 файлы ответов. Все файлы ответов принадлежат CMake. Клиенты никогда не должны их удалять.
Клиенты могут искать и читать файл индекса ответов в любое время. Клиенты могут необязательно создать директорию
reply/в любое время и отслеживать её на появление нового файла индекса ответов.
v1 Общие бессостоятельные запросы файлов
Общие бессостоятельные запросы файлов позволяют клиентам совместно запрашивать основные версии типов объектов и получать все распознанные версии CMake, который выполняется.
Клиенты могут создавать общие запросы, создавая пустые файлы в каталоге v1/query/. Формат:
<build>/.cmake/api/v1/query/<kind>-v<major>
где <kind> — один из типов объектов, -v — литерал, а <major> — номер основной версии.
Файлы этого формата являются бессостоятельными общими запросами, не принадлежащими ни одному конкретному клиенту. После создания их не следует удалять без внешней координации клиентов или вмешательства человека.
v1 Бессостоятельные запросы файлов клиента
Бессостоятельные запросы файлов клиента позволяют клиентам создавать собственные запросы на основные версии типов объектов и получать все распознанные версии CMake, который выполняется.
Клиенты могут создавать собственные запросы, создавая пустые файлы в подкаталогах запросов, специфичных для клиента. Формат:
<build>/.cmake/api/v1/query/client-<client>/<kind>-v<major>
где client- — литерал, <client> — строка, уникально идентифицирующая клиента, <kind> — один из типов объектов, -v — литерал, а <major> — номер основной версии. Каждый клиент должен выбрать уникальный идентификатор <client> самостоятельно.
Файлы этого формата являются бессостоятельными запросами, принадлежащими клиенту <client>. Владелец клиента может удалить их в любое время.
v1 Состоятельные запросы файлов клиента
Состоятельные запросы файлов позволяют клиентам запросить список версий каждого из типов объектов и получить только последнюю распознанную версию CMake, которая выполняется.
Клиенты могут создавать собственные состоятельные запросы, создавая файлы query.json в подкаталогах запросов, специфичных для клиента. Формат:
<build>/.cmake/api/v1/query/client-<client>/query.json
где client- — литерал, <client> — строка, уникально идентифицирующая клиента, а query.json — литерал. Каждый клиент должен выбрать уникальный идентификатор <client> самостоятельно.
Файлы query.json являются состоятельными запросами, принадлежащими клиенту <client>. Владелец клиента может обновлять или удалять их в любое время. При обновлении данного клиента он может обновить состоятельный запрос, который он записывает в деревьях сборки, чтобы запросить новые версии объектов. Это можно использовать для предотвращения ненужного запроса CMake на генерацию нескольких версий объектов.
Файл query.json должен содержать JSON-объект:
{
"requests": [
{ "kind": "<kind>" , "version": 1 },
{ "kind": "<kind>" , "version": { "major": 1, "minor": 2 } },
{ "kind": "<kind>" , "version": [2, 1] },
{ "kind": "<kind>" , "version": [2, { "major": 1, "minor": 2 }] },
{ "kind": "<kind>" , "version": 1, "client": {} },
{ "kind": "..." }
],
"client": {}
}
Члены:
-
requests -
JSON-массив, содержащий ноль или более запросов. Каждый запрос — JSON-объект с членами:
-
kind -
Указывает один из типов объектов, которые должны быть включены в ответ.
-
version -
Указывает версию(и) типа объекта, которая(ые) понимает клиент. Версии имеют главную и второстепенную составляющие, которые следуют соглашениям семантической версии. Значение должно быть
- целое число JSON, задающее номер основной версии (неотрицательное), или
- JSON-объект, содержащий
majorи (необязательно)minorчлены, задающие неотрицательные целочисленные компоненты версии, или - JSON-массив, элементы которого являются каждым из вышеперечисленного.
-
client -
Необязательный член, зарезервированный для использования клиентом. Это значение сохраняется в ответе, написанном для клиента в v1 файле индекса ответов, но в остальном игнорируется. Клиенты могут использовать это для передачи пользовательской информации вместе с запросом в ответ.
Для каждого запрошенного типа объекта CMake выберет первую версию, которую он распознает для этого типа среди тех, которые указаны в запросе. Ответ будет использовать выбранную главную версию с самой высокой второстепенной версией, известной выполняемому CMake для этой основной версии. Поэтому клиенты должны перечислить все поддерживаемые основные версии в предпочтительном порядке вместе с минимальной необходимой второстепенной версией для каждой основной версии.
-
-
client -
Необязательный член, зарезервированный для использования клиентом. Это значение сохраняется в ответе, написанном для клиента в v1 файле индекса ответов, но в остальном игнорируется. Клиенты могут использовать это для передачи пользовательской информации вместе с запросом в ответ.
Другие query.json верхнеуровневые члены зарезервированы для будущего использования. Если они присутствуют, они игнорируются для обеспечения обратной совместимости.
v1 Файл индекса ответов
CMake записывает файл index-*.json в каталог v1/reply/ всякий раз, когда он выполняется для генерации системы сборки. Клиенты должны сначала прочитать файл индекса ответов и могут прочитать другие v1 файлы ответов только следуя ссылкам. Формат имени файла индекса ответов:
<build>/.cmake/api/v1/reply/index-<unspecified>.json
где index- — литерал, а <unspecified> — неопределённое имя, выбранное CMake. Всякий раз, когда генерируется новый файл индекса, ему присваивается новое имя, а любое старое удаляется. В короткий промежуток времени между этими шагами могут присутствовать несколько файлов индекса; файл индекса с наибольшим именем в лексикографическом порядке является текущим файлом индекса.
Файл индекса ответов содержит JSON-объект:
{
"cmake": {
"version": {
"major": 3, "minor": 14, "patch": 0, "suffix": "",
"string": "3.14.0", "isDirty": false
},
"paths": {
"cmake": "/prefix/bin/cmake",
"ctest": "/prefix/bin/ctest",
"cpack": "/prefix/bin/cpack",
"root": "/prefix/share/cmake-3.14"
},
"generator": {
"multiConfig": false,
"name": "Unix Makefiles"
}
},
"objects": [
{ "kind": "<kind>",
"version": { "major": 1, "minor": 0 },
"jsonFile": "<file>" },
{ "...": "..." }
],
"reply": {
"<kind>-v<major>": { "kind": "<kind>",
"version": { "major": 1, "minor": 0 },
"jsonFile": "<file>" },
"<unknown>": { "error": "unknown query file" },
"...": {},
"client-<client>": {
"<kind>-v<major>": { "kind": "<kind>",
"version": { "major": 1, "minor": 0 },
"jsonFile": "<file>" },
"<unknown>": { "error": "unknown query file" },
"...": {},
"query.json": {
"requests": [ {}, {}, {} ],
"responses": [
{ "kind": "<kind>",
"version": { "major": 1, "minor": 0 },
"jsonFile": "<file>" },
{ "error": "unknown query file" },
{ "...": {} }
],
"client": {}
}
}
}
}
Члены:
-
cmake -
JSON-объект, содержащий информацию об экземпляре CMake, сгенерировавшем ответ. Он содержит члены:
-
version -
JSON-объект, определяющий версию CMake с членами:
-
major, minor, patch -
Целочисленные значения, определяющие основные, второстепенные и исправленные компоненты версии.
-
suffix -
Строка, определяющая суффикс версии, если таковой имеется, например,
g0abc3. -
string -
Строка, определяющая полную версию в формате
<major>.<minor>.<patch>[-<suffix>]. -
isDirty -
Логическое значение, указывающее, была ли версия скомпилирована из дерева исходного кода с системой контроля версий с локальными изменениями.
-
-
paths -
JSON-объект, определяющий пути к компонентам CMake. Он содержит члены для
cmake,ctest, иcpack, значения которых представляют собой JSON-строки, указывающие абсолютный путь к каждому инструменту, представленному с помощью слешей. Он также содержит членrootдля абсолютного пути к каталогу, содержащему ресурсы CMake, такие как каталогModules/(см.CMAKE_ROOT). -
generator -
JSON-объект, описывающий генератор CMake, используемый для сборки. Он содержит члены:
-
multiConfig -
Логическое значение, указывающее, поддерживает ли генератор несколько конфигураций вывода.
-
name -
Строка, определяющая имя генератора.
-
platform -
Если генератор поддерживает
CMAKE_GENERATOR_PLATFORM, это строка, определяющая имя платформы генератора.
-
-
-
objects -
JSON-массив, перечисляющий все версии всех типов объектов, сгенерированных в рамках ответа. Каждый элемент массива — ссылка файла ответа v1.
-
reply -
JSON-объект, отражающий содержимое каталога
query/, загруженного CMake для получения ответа. Члены имеют вид-
<kind>-v<major> -
Член этого вида появляется для каждого из v1 файлов общих бессостоятельных запросов, которые CMake распознал как запрос на тип объекта
<kind>с основной версией<major>. Значение — ссылка файла ответа v1 на соответствующий файл ответа для этого типа объекта и версии. -
<unknown> -
Член этого вида появляется для каждого из v1 файлов общих бессостоятельных запросов, которые CMake не распознал. Значение — JSON-объект с единственным членом
error, содержащим строку с сообщением об ошибке, указывающей, что файл запроса неизвестен. -
client-<client> -
Член этого вида появляется для каждого каталога, принадлежащего клиенту, содержащего v1 файлы клиентских бессостоятельных запросов. Значение — JSON-объект, отражающий содержимое каталога
query/client-<client>/. Члены имеют вид:-
<kind>-v<major> -
Член этого вида появляется для каждого из v1 файлов клиентских бессостоятельных запросов, которые CMake распознал как запрос на тип объекта
<kind>с основной версией<major>. Значение — ссылка файла ответа v1 на соответствующий файл ответа для этого типа объекта и версии. -
<unknown> -
Член этого вида появляется для каждого из v1 файлов клиентских бессостоятельных запросов, которые CMake не распознал. Значение — JSON-объект с единственным членом
error, содержащим строку с сообщением об ошибке, указывающей, что файл запроса неизвестен. -
query.json -
Этот член появляется для клиентов, использующих v1 файлы клиентских состоятельных запросов. Если файл
query.jsonне удалось прочитать или разобрать как JSON-объект, этот член — JSON-объект с единственным членомerror, содержащим строку с сообщением об ошибке. В противном случае этот член — JSON-объект, отражающий содержимое файлаquery.json. Члены:-
client -
Копия файла
query.jsonчленаclient, если он существует. -
requests -
Копия файла
query.jsonчленаrequests, если он существует. -
responses -
Если член
query.jsonфайлаrequestsотсутствует или некорректен, этот член — JSON-объект с единственным членомerror, содержащим строку с сообщением об ошибке. В противном случае этот член содержит JSON-массив с ответом для каждого элемента массиваrequests, в том же порядке. Каждый ответ —- JSON-объект с единственным членом
error, содержащим строку с сообщением об ошибке, или - ссылка файла ответа v1 на соответствующий файл ответа для запрошенного типа объекта и выбранной версии.
- 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": 4 },
"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, содержащему объект "каталог" версии 2 "codemodel".
Этот поле был добавлен в версии 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, содержащему объект "целевая задача" версии 2 "codemodel".
-
-
"codemodel" version 2 "directory" object
Объект "каталог" codemodel версии 2 ссылается на массив 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. Значение — беззнаковое целое число, индекс с нуля в массивеtargetsосновного объекта "codemodel" для целевого объекта для установки. -
targetIsImportLibrary -
Необязательный член, присутствующий, когда
typeравноtargetи установщик предназначен для файла библиотеки импорта Windows DLL или файла импорта AIX линковщика. Если присутствует, он имеет булевое значениеtrue. -
targetInstallNamelink -
Необязательный член, присутствующий, когда
typeравноtargetи установщик соответствует целевому объекту, который может использовать символические ссылки для реализации свойств целевого объектаVERSIONиSOVERSION. Значение — строка, указывающая, как установщик должен обрабатывать символические ссылки:skipозначает, что установщик должен пропустить символические ссылки и установить только реальный файл, аonlyозначает, что установщик должен установить только символические ссылки и не устанавливать реальный файл. Во всех случаях членpathsперечисляет, что фактически устанавливается. -
exportName -
Необязательный член, присутствующий, когда
typeравноexport. Значение — строка, определяющая имя экспорта. -
exportTargets -
Необязательный член, присутствующий, когда
typeравноexport. Значение — массив JSON, содержащий записи, соответствующие целевым объектам, включённым в экспорт. Каждая запись — объект JSON с членами:-
id -
Строка, уникально идентифицирующая целевой объект. Это соответствует члену
idцелевого объекта в массивеtargetsосновного объекта "codemodel". -
index -
Беззнаковое целое число, индекс с нуля в массиве
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-индексированный индекс в массивеnodesчленаbacktraceGraph.
-
-
backtraceGraph -
Граф трассировки "codemodel" версии 2, узлы которого ссылаются на члены
backtraceв других местах этого объекта "каталога".
"codemodel" версии 2 "целевой" объект
Объект "целевой" для codemodel версии 2 ссылается на массив targets объекта "codemodel" версии 2. Каждый объект "целевой" представляет собой JSON-объект с членами:
-
name -
Строка, определяющая логическое имя целевого объекта.
-
id -
Строка, уникально идентифицирующая целевой объект. Формат не определён и не должен интерпретироваться клиентами.
-
type -
Строка, определяющая тип целевого объекта. Значение должно быть одним из
EXECUTABLE,STATIC_LIBRARY,SHARED_LIBRARY,MODULE_LIBRARY,OBJECT_LIBRARY,INTERFACE_LIBRARY, илиUTILITY. -
backtrace -
Необязательный член, присутствующий, когда доступна обратная трассировка языка CMake к команде в исходном коде, которая создала целевой объект. Значение является 0-индексированным беззнаковым целым числом в массиве
nodesчлена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(), которая указала этот путь. Значение — 0-индексированное беззнаковое целое число в массивеbacktraceGraphчленаnodes.
-
-
-
link -
Необязательный член, присутствующий для целевых объектов исполняемых файлов и динамических библиотек, которые подключаются к исполняемому файлу времени выполнения. Значение — JSON-объект с членами, описывающими этап подключения:
-
language -
Строка, определяющая язык (например,
C,CXX,Fortran) используемой цепочки инструментов для вызова компоновщика. -
commandFragments -
Необязательный член, присутствующий, когда доступны фрагменты вызова командной строки компоновщика. Значение — JSON-массив записей, определяющих упорядоченные фрагменты. Каждая запись — JSON-объект с членами:
-
fragment -
Строка, определяющая фрагмент вызова командной строки компоновщика. Значение закодировано в формате оболочки системы сборки.
-
role -
Строка, определяющая роль содержимого фрагмента:
-
flags: флаги компоновки. -
libraries: пути к файлам или флаги библиотек компоновки. -
libraryPath: флаги поиска каталогов библиотек. -
frameworkPath: флаги поиска каталогов фреймворков macOS.
-
-
-
lto -
Необязательный член, присутствующий со значением булевой переменной
true, когда включена оптимизация на этапе компоновки (также известная как межпроцедурная оптимизация или генерация кода на этапе компоновки). -
sysroot -
Необязательный член, присутствующий, когда определена переменная
CMAKE_SYSROOT_LINKилиCMAKE_SYSROOT. Значение — JSON-объект с одним членом:-
path -
Строка, определяющая абсолютный путь к sysroot, представленный с помощью слешей.
-
-
-
archive -
Необязательный член, присутствующий для статических библиотек. Значение — JSON-объект с членами, описывающими этап архивирования:
-
commandFragments -
Необязательный член, присутствующий, когда доступны фрагменты вызова командной строки архиватора. Значение — JSON-массив записей, определяющих фрагменты. Каждая запись — JSON-объект с членами:
-
fragment -
Строка, определяющая фрагмент вызова командной строки архиватора. Значение закодировано в формате оболочки системы сборки.
-
role -
Строка, определяющая роль содержимого фрагмента:
-
flags: флаги архиватора.
-
-
-
lto -
Необязательный член, присутствующий со значением булевой переменной
true, когда включена оптимизация на этапе компоновки (также известная как межпроцедурная оптимизация или генерация кода на этапе компоновки).
-
-
dependencies -
Необязательный член, присутствующий, если целевой объект зависит от других целевых объектов. Значение — JSON-массив записей, соответствующих зависимостям. Каждая запись — JSON-объект с членами:
-
id -
Строка, уникально идентифицирующая целевой объект, от которого зависит данный целевой объект. Соответствует члену
idдругого целевого объекта. -
backtrace -
Необязательный член, присутствующий, когда доступна обратная трассировка языка CMake к вызову команды
add_dependencies(),target_link_libraries()или другой команде, создавшей эту зависимость. Значение — 0-индексированное беззнаковое целое число в массивеbacktraceGraphчленаnodes.
-
-
sources -
JSON-массив записей, соответствующих исходным файлам целевого объекта. Каждая запись — JSON-объект с членами:
-
path -
Строка, определяющая путь к исходному файлу на диске, представленный с помощью слешей. Если файл находится внутри каталога исходных файлов верхнего уровня, путь указывается относительно этого каталога. В противном случае путь является абсолютным.
-
compileGroupIndex -
Необязательный член, присутствующий, когда исходный файл компилируется. Значение — 0-индексированное беззнаковое целое число в массиве
compileGroups. -
sourceGroupIndex -
Необязательный член, присутствующий, когда исходный файл является частью группы исходных файлов, либо через команду
source_group(), либо по умолчанию. Значение — 0-индексированное беззнаковое целое число в массивеsourceGroups. -
isGenerated -
Необязательный член, присутствующий со значением булевой переменной
true, если исходный файл являетсяGENERATED. -
backtrace -
Необязательный член, присутствующий, когда доступна обратная трассировка языка CMake к команде
target_sources(),add_executable(),add_library(),add_custom_target()или другой команде, добавившей этот исходный файл в целевой объект. Значение — 0-индексированное беззнаковое целое число в массивеbacktraceGraphчленаnodes.
-
-
sourceGroups -
Дополнительный член, присутствующий, когда источники сгруппированы командой
source_group()или по умолчанию. Значение представляет собой JSON-массив записей, соответствующих группам. Каждая запись — JSON-объект с членами:-
name -
Строка, определяющая имя группы источников.
-
sourceIndexes -
JSON-массив, перечисляющий источники, принадлежащие группе. Каждая запись — беззнаковый целое число, 0-базированный индекс в основном массиве
sourcesдля целевого объекта.
-
-
compileGroups -
Дополнительный член, присутствующий, когда целевой объект имеет источники, которые компилируются. Значение представляет собой JSON-массив записей, соответствующих группам источников, которые все компилируются с одними и теми же настройками. Каждая запись — JSON-объект с членами:
-
sourceIndexes -
JSON-массив, перечисляющий источники, принадлежащие группе. Каждая запись — беззнаковый целое число, 0-базированный индекс в основном массиве
sourcesдля целевого объекта. -
language -
Строка, определяющая язык (например,
C,CXX,Fortran) используемой цепочки инструментов для компиляции исходного файла. -
languageStandard -
Дополнительный член, присутствующий, когда стандарт языка задан явно (например, через
CXX_STANDARD) или неявно функциями компиляции. Каждая запись — JSON-объект с двумя членами:-
backtraces -
Дополнительный член, присутствующий, когда доступен трассировка CMake языка до настройки
<LANG>_STANDARD. Если стандарт языка задан неявно функциями компиляции, то используются эти трассировки. Возможны несколько функций компиляции, требующих одного и того же стандарта языка, поэтому может быть несколько трассировок. Значение — JSON-массив, где каждая запись — беззнаковый целое число, 0-базированный индекс в массивеbacktraceGraphчленаnodes. -
standard -
Строка, представляющая стандарт языка.
Этот член был добавлен в версии codemodel 2.2.
-
-
compileCommandFragments -
Дополнительный член, присутствующий, когда доступны фрагменты вызова компилятора. Значение — JSON-массив записей, определяющих упорядоченные фрагменты. Каждая запись — JSON-объект с одним членом:
-
fragment -
Строка, определяющая фрагмент вызова компилятора. Значение закодировано в формате оболочки системы построения.
-
-
includes -
Дополнительный член, присутствующий, когда есть каталоги заголовков. Значение — JSON-массив с записью для каждого каталога. Каждая запись — JSON-объект с членами:
-
path -
Строка, определяющая путь к каталогу заголовков, представленный с помощью слешей.
-
isSystem -
Дополнительный член, присутствующий со значением булево
true, если каталог заголовков помечен как системный. -
backtrace -
Дополнительный член, присутствующий, когда доступна трассировка CMake языка до вызова
target_include_directories()или другого вызова, добавившего этот каталог заголовков. Значение — беззнаковое целое число, 0-базированный индекс в массивеbacktraceGraphчленаnodes.
-
-
precompileHeaders -
Дополнительный член, присутствующий, когда
target_precompile_headers()или другие вызовы задаютPRECOMPILE_HEADERSдля целевого объекта. Значение — JSON-массив с записью для каждого заголовка. Каждая запись — JSON-объект с членами:-
header -
Полный путь к файлу предварительно скомпилированного заголовка.
-
backtrace -
Дополнительный член, присутствующий, когда доступна трассировка CMake языка до вызова
target_precompile_headers()или другого вызова, добавившего этот предварительно скомпилированный заголовок. Значение — беззнаковое целое число, 0-базированный индекс в массивеbacktraceGraphчленаnodes.
Этот член был добавлен в версии codemodel 2.1.
-
-
defines -
Дополнительный член, присутствующий, когда есть определения препроцессора. Значение — JSON-массив с записью для каждого определения. Каждая запись — JSON-объект с членами:
-
define -
Строка, определяющая определение препроцессора в формате
<name>[=<value>], например,DEFилиDEF=1. -
backtrace -
Дополнительный член, присутствующий, когда доступна трассировка CMake языка до вызова
target_compile_definitions()или другого вызова, добавившего это определение препроцессора. Значение — беззнаковое целое число, 0-базированный индекс в массивеbacktraceGraphчленаnodes.
-
-
sysroot -
Дополнительный член, присутствующий, когда переменная
CMAKE_SYSROOT_COMPILEилиCMAKE_SYSROOTопределена. Значение — JSON-объект с одним членом:-
path -
Строка, определяющая абсолютный путь к sysroot, представленный с помощью слешей.
-
-
-
backtraceGraph -
"Граф трассировок" codemodel версии 2, узлы которого ссылаются на члены
backtraceв других местах этого объекта "target".
"Граф трассировок" codemodel версии 2
Член backtraceGraph объекта "каталога" codemodel версии 2 или "целевого объекта" codemodel версии 2 — JSON-объект, описывающий граф трассировок. Его узлы ссылаются на члены backtrace в содержащем объекте. Члены объекта графа трассировок:
-
nodes -
JSON-массив, перечисляющий узлы в графе трассировок. Каждая запись — JSON-объект с членами:
-
file -
Беззнаковое целое число, 0-базированный индекс в массиве трассировки
files. -
line -
Дополнительный член, присутствующий, когда узел представляет строку в файле. Значение — беззнаковое целое число, номер строки (1-базированный).
-
command -
Дополнительный член, присутствующий, когда узел представляет вызов команды в файле. Значение — беззнаковое целое число, 0-базированный индекс в массиве трассировки
commands. -
parent -
Дополнительный член, присутствующий, когда узел не является нижним уровнем стека вызовов. Значение — беззнаковое целое число, 0-базированный индекс другой записи в массиве трассировки
nodes.
-
-
commands -
JSON-массив, перечисляющий имена команд, на которые ссылаются узлы трассировки. Каждая запись — строка, определяющая имя команды.
-
files -
JSON-массив, перечисляющий файлы CMake языка, на которые ссылаются узлы трассировки. Каждая запись — строка, определяющая путь к файлу, представленный с помощью слешей. Если файл находится внутри каталога исходного кода верхнего уровня, то путь указан относительно этого каталога. В противном случае путь является абсолютным.
Тип объекта "cache"
Объект типа cache перечисляет записи кэша. Это переменные, сохраненные в постоянном кэше (CMakeCache.txt) для дерева построения.
Существует только одна основная версия объекта cache, версия 2. Версии 1 не существует, чтобы избежать путаницы с версией из режима cmake-server(7).
"cache" версия 2
Объект cache версии 2 — JSON-объект:
{
"kind": "cache",
"version": { "major": 2, "minor": 0 },
"entries": [
{
"name": "BUILD_SHARED_LIBS",
"value": "ON",
"type": "BOOL",
"properties": [
{
"name": "HELPSTRING",
"value": "Build shared libraries"
}
]
},
{
"name": "CMAKE_GENERATOR",
"value": "Unix Makefiles",
"type": "INTERNAL",
"properties": [
{
"name": "HELPSTRING",
"value": "Name of generator."
}
]
}
]
}
Члены, специфичные для объектов cache, это:
-
entries -
JSON-массив, записи которого — JSON-объекты, определяющие запись кэша. Члены каждой записи:
-
name -
Строка, определяющая имя записи.
-
value -
Строка, определяющая значение записи.
-
type -
Строка, определяющая тип записи, используемый
cmake-gui(1)для выбора виджета для редактирования. -
properties -
JSON-массив записей, определяющих связанные свойства записи кэша. Каждая запись — JSON-объект, содержащий члены:
-
name -
Строка, определяющая имя свойства записи кэша.
-
value -
Строка, определяющая значение свойства записи кэша.
-
-
Тип объекта "cmakeFiles"
Объект cmakeFiles содержит список файлов, используемых CMake при конфигурировании и генерации системы сборки. В него входят файлы CMakeLists.txt , а также включенные файлы .cmake.
Существует только одна главная версия объекта cmakeFiles, версия 1.
"cmakeFiles" версия 1
Объект cmakeFiles версии 1 представляет собой JSON-объект:
{
"kind": "cmakeFiles",
"version": { "major": 1, "minor": 0 },
"paths": {
"build": "/path/to/top-level-build-dir",
"source": "/path/to/top-level-source-dir"
},
"inputs": [
{
"path": "CMakeLists.txt"
},
{
"isGenerated": true,
"path": "/path/to/top-level-build-dir/.../CMakeSystem.cmake"
},
{
"isExternal": true,
"path": "/path/to/external/third-party/module.cmake"
},
{
"isCMake": true,
"isExternal": true,
"path": "/path/to/cmake/Modules/CMakeGenericSystem.cmake"
}
]
}
Члены, специфичные для объектов cmakeFiles:
-
paths -
JSON-объект, содержащий члены:
-
source -
Строка, определяющая абсолютный путь к директории исходного кода верхнего уровня, представленная с помощью слешей.
-
build -
Строка, определяющая абсолютный путь к директории сборки верхнего уровня, представленная с помощью слешей.
-
-
inputs -
JSON-массив, чьи элементы являются JSON-объектами, определяющими входной файл, используемый CMake при конфигурировании и генерации системы сборки. Члены каждого элемента:
-
path -
Строка, определяющая путь к входному файлу для CMake, представленная с помощью слешей. Если файл находится внутри директории исходного кода верхнего уровня, путь указывается относительно этой директории. В противном случае путь является абсолютным.
-
isGenerated -
Необязательный член, присутствующий со значением булевого типа
true, если путь указывает на файл, находящийся в директории сборки верхнего уровня, и сборка выполняется вне исходной директории. Этот член недоступен при сборке в исходной директории. -
isExternal -
Необязательный член, присутствующий со значением булевого типа
true, если путь указывает на файл, не находящийся в директориях исходного кода или сборки верхнего уровня. -
isCMake -
Необязательный член, присутствующий со значением булевого типа
true, если путь указывает на файл в установленной директории CMake.
-
Вид объекта "toolchains"
Объект toolchains содержит список свойств используемых при сборке компиляторов. Включая язык, путь к компилятору, идентификатор и версию.
Существует только одна главная версия объекта toolchains, версия 1.
"toolchains" версия 1
Объект toolchains версии 1 представляет собой JSON-объект:
{
"kind": "toolchains",
"version": { "major": 1, "minor": 0 },
"toolchains": [
{
"language": "C",
"compiler": {
"path": "/usr/bin/cc",
"id": "GNU",
"version": "9.3.0",
"implicit": {
"includeDirectories": [
"/usr/lib/gcc/x86_64-linux-gnu/9/include",
"/usr/local/include",
"/usr/include/x86_64-linux-gnu",
"/usr/include"
],
"linkDirectories": [
"/usr/lib/gcc/x86_64-linux-gnu/9",
"/usr/lib/x86_64-linux-gnu",
"/usr/lib",
"/lib/x86_64-linux-gnu",
"/lib"
],
"linkFrameworkDirectories": [],
"linkLibraries": [ "gcc", "gcc_s", "c", "gcc", "gcc_s" ]
}
},
"sourceFileExtensions": [ "c", "m" ]
},
{
"language": "CXX",
"compiler": {
"path": "/usr/bin/c++",
"id": "GNU",
"version": "9.3.0",
"implicit": {
"includeDirectories": [
"/usr/include/c++/9",
"/usr/include/x86_64-linux-gnu/c++/9",
"/usr/include/c++/9/backward",
"/usr/lib/gcc/x86_64-linux-gnu/9/include",
"/usr/local/include",
"/usr/include/x86_64-linux-gnu",
"/usr/include"
],
"linkDirectories": [
"/usr/lib/gcc/x86_64-linux-gnu/9",
"/usr/lib/x86_64-linux-gnu",
"/usr/lib",
"/lib/x86_64-linux-gnu",
"/lib"
],
"linkFrameworkDirectories": [],
"linkLibraries": [
"stdc++", "m", "gcc_s", "gcc", "c", "gcc_s", "gcc"
]
}
},
"sourceFileExtensions": [
"C", "M", "c++", "cc", "cpp", "cxx", "mm", "CPP"
]
}
]
}
Члены, специфичные для объектов toolchains:
-
toolchains -
JSON-массив, чьи элементы являются JSON-объектами, определяющими компилятор, связанный с конкретным языком. Члены каждого элемента:
-
language -
JSON-строка, определяющая язык компилятора, например C или CXX. Имена языков совпадают с именами языков, которые могут быть переданы команде
project(). Поскольку CMake поддерживает только один компилятор на язык, это поле можно использовать в качестве ключа. -
compiler -
JSON-объект, содержащий члены:
-
path -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILERопределена для текущего языка. Его значение — JSON-строка, содержащая путь к компилятору. -
id -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILER_IDопределена для текущего языка. Его значение — JSON-строка, содержащая идентификатор (GNU, MSVC и т. д.) компилятора. -
version -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILER_VERSIONопределена для текущего языка. Его значение — JSON-строка, содержащая версию компилятора. -
target -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILER_TARGETопределена для текущего языка. Его значение — JSON-строка, содержащая целевой кросс-компиляции компилятора. -
implicit -
JSON-объект, содержащий члены:
-
includeDirectories -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIESопределена для текущего языка. Его значение — JSON-массив JSON-строк, где каждая строка содержит путь к неявной директории включения для компилятора. -
linkDirectories -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIESопределена для текущего языка. Его значение — JSON-массив JSON-строк, где каждая строка содержит путь к неявной директории связывания для компилятора. -
linkFrameworkDirectories -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIESопределена для текущего языка. Его значение — JSON-массив JSON-строк, где каждая строка содержит путь к неявной директории связывания фреймворков для компилятора. -
linkLibraries -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIESопределена для текущего языка. Его значение — JSON-массив JSON-строк, где каждая строка содержит путь к неявной библиотеке связывания для компилятора.
-
-
-
sourceFileExtensions -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_SOURCE_FILE_EXTENSIONSопределена для текущего языка. Его значение — JSON-массив JSON-строк, где каждая строка содержит расширение файла (без ведущей точки) для языка.
-
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.23/manual/cmake-file-api.7.html