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
Объект codemodel версии 2 представляет собой JSON-объект:
{
"kind": "codemodel",
"version": { "major": 2, "minor": 5 },
"paths": {
"source": "/path/to/top-level-source-dir",
"build": "/path/to/top-level-build-dir"
},
"configurations": [
{
"name": "Debug",
"directories": [
{
"source": ".",
"build": ".",
"childIndexes": [ 1 ],
"projectIndex": 0,
"targetIndexes": [ 0 ],
"hasInstallRule": true,
"minimumCMakeVersion": {
"string": "3.14"
},
"jsonFile": "<file>"
},
{
"source": "sub",
"build": "sub",
"parentIndex": 0,
"projectIndex": 0,
"targetIndexes": [ 1 ],
"minimumCMakeVersion": {
"string": "3.14"
},
"jsonFile": "<file>"
}
],
"projects": [
{
"name": "MyProject",
"directoryIndexes": [ 0, 1 ],
"targetIndexes": [ 0, 1 ]
}
],
"targets": [
{
"name": "MyExecutable",
"directoryIndex": 0,
"projectIndex": 0,
"jsonFile": "<file>"
},
{
"name": "MyLibrary",
"directoryIndex": 1,
"projectIndex": 0,
"jsonFile": "<file>"
}
]
}
]
}
Члены, специфичные для объектов codemodel:
-
paths -
Объект JSON, содержащий члены:
-
source -
Строка, определяющая абсолютный путь к корневой директории исходного кода, представленная с помощью слешей.
-
build -
Строка, определяющая абсолютный путь к корневой директории сборки, представленная с помощью слешей.
-
-
configurations -
Массив JSON, содержащий записи, соответствующие доступным конфигурациям сборки. В генераторах с одной конфигурацией есть одна запись для значения переменной
CMAKE_BUILD_TYPE. В генераторах с множеством конфигураций есть запись для каждой конфигурации, перечисленной в переменнойCMAKE_CONFIGURATION_TYPES. Каждая запись — объект JSON, содержащий члены:-
name -
Строка, определяющая имя конфигурации, например
Debug. -
directories -
Массив JSON, содержащий записи, каждая из которых соответствует директории системы сборки, исходная директория которой содержит файл
CMakeLists.txt. Первая запись соответствует корневой директории. Каждая запись — объект JSON, содержащий члены:-
source -
Строка, определяющая путь к директории исходного кода, представленная с помощью слешей. Если директория находится внутри корневой директории исходного кода, то путь задаётся относительно этой директории (с
.для самой корневой директории исходного кода). В противном случае путь является абсолютным. -
build -
Строка, определяющая путь к директории сборки, представленная с помощью слешей. Если директория находится внутри корневой директории сборки, то путь задаётся относительно этой директории (с
.для самой корневой директории сборки). В противном случае путь является абсолютным. -
parentIndex -
Необязательный член, присутствующий, когда директория не является корневой. Значение — целое без знака, индекс с нуля другой записи в главном массиве
directories, который соответствует родительской директории, добавившей эту директорию как поддиректорию. -
childIndexes -
Необязательный член, присутствующий, когда директория имеет поддиректории. Значение — массив JSON, содержащий записи, соответствующие дочерним директориям, созданным командами
add_subdirectory()илиsubdirs(). Каждая запись — целое без знака, индекс с нуля другой записи в главном массивеdirectories. -
projectIndex -
Целое без знака, индекс с нуля в главном массиве
projects, указывающий на проект системы сборки, к которому принадлежит эта директория. -
targetIndexes -
Необязательный член, присутствующий, когда у самой директории есть цели, за исключением тех, которые принадлежат поддиректориям. Значение — массив JSON, содержащий записи, соответствующие целям. Каждая запись — целое без знака, индекс с нуля в главном массиве
targets. -
minimumCMakeVersion -
Необязательный член, присутствующий, когда известна минимальная требуемая версия CMake для директории. Это версия
<min>, заданная последнему вызову командыcmake_minimum_required(VERSION)в самой директории или одном из её предков. Значение — объект JSON с одним членом:-
string -
Строка, определяющая минимальную требуемую версию в формате:
<major>.<minor>[.<patch>[.<tweak>]][<suffix>]
Каждый компонент — целое без знака, а суффикс может быть произвольной строкой.
-
-
hasInstallRule -
Необязательный член, который присутствует с булевым значением
true, когда в директории или одной из её поддиректорий присутствуют правилаinstall(), т.е. есть ли правилоmake installили эквивалентное. -
jsonFile -
Строка JSON, задающая путь относительно файла codemodel к другому файлу JSON, содержащему объект «каталог» «codemodel» версии 2.
Этот поле был добавлен в версии 2.3 codemodel.
-
-
projects -
Массив JSON, содержащий записи, соответствующие верхнеуровневому проекту и подпроектам, определённым в системе сборки. Каждый (под-)проект соответствует директории исходного кода, в файле которой
CMakeLists.txtкомандаproject()вызывается с именем проекта, отличным от имени родительской директории. Первая запись соответствует верхнеуровневому проекту.Каждая запись — объект JSON, содержащий члены:
-
name -
Строка, определяющая имя, заданное команде
project(). -
parentIndex -
Необязательный член, присутствующий, когда проект не является верхнеуровневым. Значение — целое без знака, индекс с нуля другой записи в главном массиве
projects, который соответствует родительскому проекту, добавившему этот проект в качестве подпроекта. -
childIndexes -
Необязательный член, присутствующий, когда проект имеет подпроекты. Значение — массив JSON, содержащий записи, соответствующие подпроектам. Каждая запись — целое без знака, индекс с нуля другой записи в главном массиве
projects. -
directoryIndexes -
Массив JSON, содержащий записи, соответствующие директориям системы сборки, которые являются частью проекта. Первая запись соответствует корневой директории проекта. Каждая запись — целое без знака, индекс с нуля в главном массиве
directories. -
targetIndexes -
Необязательный член, присутствующий, когда у проекта есть цели, за исключением тех, которые принадлежат подпроектам. Значение — массив JSON, содержащий записи, соответствующие целям. Каждая запись — целое без знака, индекс с нуля в главном массиве
targets.
-
-
targets -
Массив JSON, содержащий записи, соответствующие целям системы сборки. Такие цели создаются вызовами
add_executable(),add_library()иadd_custom_target(), за исключением импортированных целей и интерфейсных библиотек (которые не генерируют никаких правил сборки). Каждая запись — объект JSON, содержащий члены:-
name -
Строка, определяющая имя цели.
-
id -
Строка, уникально идентифицирующая цель. Она соответствует полю
idв файле, на который ссылаетсяjsonFile. -
directoryIndex -
Целое без знака, индекс с нуля в главном массиве
directories, указывающий на директорию системы сборки, в которой определена цель. -
projectIndex -
Целое без знака, индекс с нуля в главном массиве
projects, указывающий на проект системы сборки, в котором определена цель. -
jsonFile -
Строка JSON, задающая путь относительно файла codemodel к другому файлу JSON, содержащему объект «цель» «codemodel» версии 2.
-
-
Объект «каталог» «codemodel» версии 2
Объект «каталог» «codemodel» ссылается на массив directories объекта «codemodel» версии 2. Каждый объект «каталог» — объект JSON с членами:
-
paths -
Объект JSON, содержащий члены:
-
source -
Строка, определяющая путь к директории исходного кода, представленная с помощью слешей. Если директория находится внутри корневой директории исходного кода, то путь задаётся относительно этой директории (с
.для самой корневой директории исходного кода). В противном случае путь является абсолютным. -
build -
Строка, определяющая путь к директории сборки, представленная с помощью слешей. Если директория находится внутри корневой директории сборки, то путь задаётся относительно этой директории (с
.для самой корневой директории сборки). В противном случае путь является абсолютным.
-
-
installers -
Массив JSON, содержащий записи, соответствующие правилам
install(). Каждая запись — объект JSON, содержащий члены:
-
component -
Строка, определяющая компонент, выбранный вызовом соответствующей команды
install(). -
destination -
Необязательный член, присутствующий для определённых значений
typeниже. Значение — это строка, определяющая путь назначения установки. Путь может быть абсолютным или относительным к префиксу установки. -
paths -
Необязательный член, присутствующий для определённых значений
typeниже. Значение — массив JSON, содержащий записи, соответствующие путям (файлам или каталогам) для установки. Каждая запись — это одна из:- Строка, определяющая путь, из которого файл или каталог подлежат установке. Часть пути, не предваряемая
/, также определяет путь (имя), по которому файл или каталог будут установлены в рамках назначения. -
Объект JSON с членами:
-
from -
Строка, определяющая путь, из которого файл или каталог подлежат установке.
-
to -
Строка, определяющая путь, по которому файл или каталог будут установлены в рамках назначения.
-
В обоих случаях пути представлены с помощью слешей. Если путь «из» находится внутри верхнего каталога, документированного соответствующим значением
type, тогда путь указывается относительно этого каталога. В противном случае путь является абсолютным. - Строка, определяющая путь, из которого файл или каталог подлежат установке. Часть пути, не предваряемая
-
type -
Строка, определяющая тип правила установки. Значение — одно из следующих, при этом некоторые варианты содержат дополнительные члены:
-
file -
Вызов
install(FILES)илиinstall(PROGRAMS). Членыdestinationиpathsзаполнены, пути внутри верхнего каталога source выражены относительно него. Может присутствовать членisOptional. Этот тип дополнительных членов не имеет. -
directory -
Вызов
install(DIRECTORY). Членыdestinationиpathsзаполнены, пути внутри верхнего каталога source выражены относительно него. Может присутствовать членisOptional. Этот тип дополнительных членов не имеет. -
target -
Вызов
install(TARGETS). Членыdestinationиpathsзаполнены, пути внутри верхнего каталога build выражены относительно него. Может присутствовать членisOptional. Этот тип имеет дополнительные членыtargetId,targetIndex,targetIsImportLibrary, иtargetInstallNamelink. -
export -
Вызов
install(EXPORT). Членыdestinationиpathsзаполнены, пути внутри верхнего каталога build выражены относительно него. Записиpathsотносятся к файлам, сгенерированным автоматически CMake для установки, и их фактические значения считаются частными деталями реализации. Этот тип имеет дополнительные членыexportNameиexportTargets. -
script -
Вызов
install(SCRIPT). Этот тип имеет дополнительный членscriptFile. -
code -
Вызов
install(CODE). Этот тип дополнительных членов не имеет. -
importedRuntimeArtifacts -
Вызов
install(IMPORTED_RUNTIME_ARTIFACTS). Заполнен членdestination. Может присутствовать членisOptional. Этот тип дополнительных членов не имеет. -
runtimeDependencySet -
Вызов
install(RUNTIME_DEPENDENCY_SET)илиinstall(TARGETS)сRUNTIME_DEPENDENCIES. Заполнен членdestination. Этот тип имеет дополнительные членыruntimeDependencySetNameиruntimeDependencySetType. -
fileSet -
Вызов
install(TARGETS)сFILE_SET. Заполнены членыdestinationиpaths. Может присутствовать членisOptional. Этот тип имеет дополнительные членыfileSetName,fileSetType,fileSetDirectories, иfileSetTarget.Этот тип был добавлен в версии codemodel 2.4.
-
-
isExcludeFromAll -
Необязательный член, присутствующий со значением булевого типа
trueпри вызовеinstall()с опциейEXCLUDE_FROM_ALL. -
isForAllComponents -
Необязательный член, присутствующий со значением булевого типа
trueпри вызовеinstall(SCRIPT|CODE)с опциейALL_COMPONENTS. -
isOptional -
Необязательный член, присутствующий со значением булевого типа
trueпри вызовеinstall()с опциейOPTIONAL. Разрешено, когдаtypeравноfile,directory, илиtarget. -
targetId -
Необязательный член, присутствующий, когда
typeравноtarget. Значение — строка, уникально идентифицирующая целевой объект для установки. Соответствует членуidцелевого объекта в массивеtargetsосновного объекта «codemodel». -
targetIndex -
Необязательный член, присутствующий, когда
typeравноtarget. Значение — беззнаковое целое число, 0-основанный индекс в массивеtargetsосновного объекта «codemodel» для целевого объекта для установки. -
targetIsImportLibrary -
Необязательный член, присутствующий, когда
typeравноtargetи установщик предназначен для файла библиотеки импорта DLL Windows или файла импорта компоновщика AIX. При наличии, значение — булевоtrue. -
targetInstallNamelink -
Необязательный член, присутствующий, когда
typeравноtargetи установщик соответствует целевому объекту, который может использовать символические ссылки для реализации свойств целевых объектовVERSIONиSOVERSION. Значение — строка, указывающая, как установщик должен обрабатывать символические ссылки:skipозначает, что установщик должен пропустить символические ссылки и установить только фактический файл, аonlyозначает, что установщик должен установить только символические ссылки и не устанавливать фактический файл. В любом случае членpathsперечисляет, что фактически устанавливается. -
exportName -
Необязательный член, присутствующий, когда
typeравноexport. Значение — строка, определяющая имя экспорта. -
exportTargets -
Необязательный член, присутствующий, когда
typeравноexport. Значение — массив JSON, содержащий записи, соответствующие целевым объектам, включенным в экспорт. Каждая запись — это объект JSON с членами:-
id -
Строка, уникально идентифицирующая целевой объект. Соответствует члену
idцелевого объекта в массивеtargetsосновного объекта «codemodel». -
index -
Беззнаковое целое число, 0-основанный индекс в массиве
targetsосновного объекта «codemodel» для целевого объекта.
-
-
runtimeDependencySetName -
Необязательный член, присутствующий, когда
typeравноruntimeDependencySetи установщик был создан вызовомinstall(RUNTIME_DEPENDENCY_SET). Значение — строка, определяющая имя набора зависимостей времени выполнения, которое было установлено. -
runtimeDependencySetType -
Необязательный член, присутствующий, когда
typeравноruntimeDependencySet. Значение — строка с одним из следующих значений:-
library -
Указывает, что этот установщик устанавливает зависимости, которые не являются macOS-фреймворками.
-
framework -
Указывает, что этот установщик устанавливает зависимости, которые являются macOS-фреймворками.
-
-
fileSetName -
Необязательный член, присутствующий, когда
typeравноfileSet. Значение — строка с именем набора файлов.Это поле было добавлено в версии codemodel 2.4.
-
fileSetType -
Необязательный член, присутствующий, когда
typeравноfileSet. Значение — строка с типом набора файлов.Это поле было добавлено в версии codemodel 2.4.
-
fileSetDirectories
-
-
Дополнительный член, присутствующий, когда
typeявляетсяfileSet. Значение представляет собой список строк с базовыми каталогами набора файлов (определёнными путём генерацииHEADER_DIRSилиHEADER_DIRS_<NAME>).Это поле было добавлено в версии codemodel 2.4.
-
fileSetTarget -
Дополнительный член, присутствующий, когда
typeявляетсяfileSet. Значение представляет собой JSON-объект с членами:-
id -
Строка, уникально идентифицирующая целевой объект. Она соответствует члену
idцелевого объекта в массивеtargetsосновного объекта "codemodel". -
index -
Беззнаковое целое число, 0-основанный индекс в массиве
targetsосновного объекта "codemodel" для целевого объекта.
Это поле было добавлено в версии codemodel 2.4.
-
-
scriptFile -
Дополнительный член, присутствующий, когда
typeявляетсяscript. Значение представляет собой строку, определяющую путь к файлу скрипта на диске, представленный с использованием слешей. Если файл находится в каталоге исходных файлов верхнего уровня, то путь указывается относительно этого каталога. В противном случае путь является абсолютным. -
backtrace -
Дополнительный член, присутствующий, когда доступен стек отладки CMake языка для
install()или другого вызова команды, добавившей этот установщик. Значение представляет собой беззнаковое целое число, 0-основанный индекс в массивеbacktraceGraphчленаnodes.
-
-
backtraceGraph -
Граф отслеживания "codemodel" версии 2, узлы которого ссылаются на члены
backtraceв других частях объекта "directory".
Объект "target" версии 2 "codemodel"
Объект "target" codemodel версии 2 ссылается на массив targets объекта "codemodel" версии 2. Каждый объект "target" представляет собой JSON-объект с членами:
-
name -
Строка, определяющая логическое имя целевого объекта.
-
id -
Строка, уникально идентифицирующая целевой объект. Формат не определён и не должен интерпретироваться клиентами.
-
type -
Строка, определяющая тип целевого объекта. Значение должно быть одним из
EXECUTABLE,STATIC_LIBRARY,SHARED_LIBRARY,MODULE_LIBRARY,OBJECT_LIBRARY,INTERFACE_LIBRARY, илиUTILITY. -
backtrace -
Необязательный член, присутствующий, когда доступен трассировка от CMake до команды в исходном коде, создавшей целевой объект. Значение — это целое без знака, индекс с нуля в массиве члена
backtraceGraph. -
folder -
Необязательный член, присутствующий, когда свойство целевого объекта
FOLDERзадано. Значение — это JSON-объект с одним членом:-
name -
Строка, определяющая имя папки целевого объекта.
-
-
paths -
JSON-объект, содержащий члены:
-
source -
Строка, определяющая путь к каталогу исходных файлов целевого объекта, представленный с помощью слэшей. Если каталог находится внутри каталога исходных файлов верхнего уровня, путь задаётся относительно этого каталога (с
.для самого каталога исходных файлов верхнего уровня). В противном случае путь является абсолютным. -
build -
Строка, определяющая путь к каталогу сборки целевого объекта, представленный с помощью слэшей. Если каталог находится внутри каталога сборки верхнего уровня, путь задаётся относительно этого каталога (с
.для самого каталога сборки верхнего уровня). В противном случае путь является абсолютным.
-
-
nameOnDisk -
Необязательный член, присутствующий для целевых объектов исполняемых файлов и библиотек, которые связаны или архивированы в один основной артефакт. Значение — строка, определяющая имя файла этого артефакта на диске.
-
artifacts -
Необязательный член, присутствующий для целевых объектов исполняемых файлов и библиотек, которые создают артефакты на диске для использования зависимыми объектами. Значение — JSON-массив записей, соответствующих артефактам. Каждая запись — это JSON-объект, содержащий один член:
-
path -
Строка, определяющая путь к файлу на диске, представленный с помощью слэшей. Если файл находится внутри каталога сборки верхнего уровня, путь задаётся относительно этого каталога. В противном случае путь является абсолютным.
-
-
isGeneratorProvided -
Необязательный член, присутствующий со значением булевого типа
true, если целевой объект предоставляется генератором системы сборки CMake, а не командой в исходном коде. -
install -
Необязательный член, присутствующий, когда целевой объект имеет правило
install(). Значение — JSON-объект с членами:-
prefix -
JSON-объект, определяющий префикс установки. Он содержит один член:
-
path -
Строка, определяющая значение
CMAKE_INSTALL_PREFIX.
-
-
destinations -
JSON-массив записей, определяющих путь назначения установки. Каждая запись — JSON-объект с членами:
-
path -
Строка, определяющая путь назначения установки. Путь может быть абсолютным или относительным к префиксу установки.
-
backtrace -
Необязательный член, присутствующий, когда доступна трассировка CMake до вызова команды
install(), которая указала этот путь назначения. Значение — целое без знака, индекс с нуля в массиве членаbacktraceGraph.
-
-
-
link -
Необязательный член, присутствующий для исполняемых файлов и динамических библиотек, которые связываются с исполняемым файлом времени выполнения. Значение — JSON-объект с членами, описывающими шаг связывания:
-
language -
Строка, определяющая язык (например,
C,CXX,Fortran), используемого для вызова компоновщика. -
commandFragments -
Необязательный член, присутствующий, когда доступны фрагменты вызова команды компоновки. Значение — JSON-массив записей, определяющих упорядоченные фрагменты. Каждая запись — JSON-объект с членами:
-
fragment -
Строка, определяющая фрагмент вызова команды компоновки. Значение закодировано в формате оболочки системы сборки.
-
role -
Строка, определяющая роль содержимого фрагмента:
-
flags: флаги компоновки. -
libraries: пути к файлам библиотек или флаги компоновки. -
libraryPath: флаги поиска путей библиотек. -
frameworkPath: флаги поиска путей к фреймворкам macOS.
-
-
-
lto -
Необязательный член, присутствующий со значением булевого типа
true, когда включена оптимизация во время компоновки (также известная как межпроцедурная оптимизация или генерация кода во время компоновки). -
sysroot -
Необязательный член, присутствующий, когда определена переменная
CMAKE_SYSROOT_LINKилиCMAKE_SYSROOT. Значение — JSON-объект с одним членом:-
path -
Строка, определяющая абсолютный путь к sysroot, представленный с помощью слэшей.
-
-
-
archive -
Необязательный член, присутствующий для статических библиотек. Значение — JSON-объект с членами, описывающими шаг архивирования:
-
commandFragments -
Необязательный член, присутствующий, когда доступны фрагменты вызова команды архиватора. Значение — JSON-массив записей, определяющих фрагменты. Каждая запись — JSON-объект с членами:
-
fragment -
Строка, определяющая фрагмент вызова команды архиватора. Значение закодировано в формате оболочки системы сборки.
-
role -
Строка, определяющая роль содержимого фрагмента:
-
flags: флаги архиватора.
-
-
-
lto -
Необязательный член, присутствующий со значением булевого типа
true, когда включена оптимизация во время компоновки (также известная как межпроцедурная оптимизация или генерация кода во время компоновки).
-
-
dependencies -
Необязательный член, присутствующий, когда целевой объект зависит от других целевых объектов. Значение — JSON-массив записей, соответствующих зависимостям. Каждая запись — JSON-объект с членами:
-
id -
Строка, уникально идентифицирующая целевой объект, от которого зависит данный целевой объект. Это совпадает с главным членом
idдругого целевого объекта. -
backtrace -
Необязательный член, присутствующий, когда доступна трассировка CMake до вызова команды
add_dependencies(),target_link_libraries()или другого вызова команды, создавшего эту зависимость. Значение — целое без знака, индекс с нуля в массиве членаbacktraceGraph.
-
-
fileSets -
JSON-массив записей, соответствующих наборам файлов целевого объекта. Каждая запись — JSON-объект с членами:
-
name -
Строка, определяющая имя набора файлов.
-
type -
Строка, определяющая тип набора файлов. См. поддерживаемые типы наборов файлов в
target_sources(). -
visibility -
Строка, определяющая видимость набора файлов; один из
PUBLIC,PRIVATE, илиINTERFACE. -
baseDirectories -
JSON-массив строк, определяющих базовые каталоги, содержащие исходные файлы в наборе файлов.
Этот член был добавлен в версии codemodel 2.5.
-
-
sources
-
Массив JSON-записей, соответствующих исходным файлам целевого объекта. Каждая запись — JSON-объект с членами:
-
path -
Строка, определяющая путь к исходному файлу на диске, представленный с помощью слешей. Если файл находится внутри каталога исходного кода верхнего уровня, то путь указывается относительно этого каталога. В противном случае путь является абсолютным.
-
compileGroupIndex -
Необязательный член, присутствующий при компиляции исходного кода. Значение — беззнаковое целое число, 0-основанный индекс в массиве
compileGroups. -
sourceGroupIndex -
Необязательный член, присутствующий, когда исходный код является частью группы исходных файлов, либо через команду
source_group(), либо по умолчанию. Значение — беззнаковое целое число, 0-основанный индекс в массивеsourceGroups. -
isGenerated -
Необязательный член, присутствующий со значением типа boolean
true, если исходный код являетсяGENERATED. -
fileSetIndex -
Необязательный член, присутствующий, когда исходный код является частью набора файлов. Значение — беззнаковое целое число, 0-основанный индекс в массиве
fileSets.Этот член был добавлен в версии codemodel 2.5.
-
backtrace -
Необязательный член, присутствующий, когда доступен обратный отслеживаемый CMake-языковой трассировка для команд
target_sources(),add_executable(),add_library(),add_custom_target()или других, добавивших данный исходный код в целевой объект. Значение — беззнаковое целое число, 0-основанный индекс в массивеbacktraceGraphчленаnodes.
-
-
sourceGroups -
Необязательный член, присутствующий, когда исходные файлы сгруппированы командой
source_group()или по умолчанию. Значение — JSON-массив записей, соответствующих группам. Каждая запись — JSON-объект с членами:-
name -
Строка, определяющая имя группы исходных файлов.
-
sourceIndexes -
JSON-массив, перечисляющий исходные файлы, принадлежащие группе. Каждая запись — беззнаковое целое число, 0-основанный индекс в главном массиве
sourcesдля целевого объекта.
-
-
compileGroups -
Необязательный член, присутствующий, когда целевой объект имеет исходные файлы, подлежащие компиляции. Значение — JSON-массив записей, соответствующих группам исходных файлов, которые все компилируются с одинаковыми настройками. Каждая запись — JSON-объект с членами:
-
sourceIndexes -
JSON-массив, перечисляющий исходные файлы, принадлежащие группе. Каждая запись — беззнаковое целое число, 0-основанный индекс в главном массиве
sourcesдля целевого объекта. -
language -
Строка, определяющая язык (например,
C,CXX,Fortran) используемой для компиляции исходного файла инструментальной цепочки. -
languageStandard -
Необязательный член, присутствующий, когда стандарт языка задан явно (например, через
CXX_STANDARD) или неявно, через особенности компиляции. Каждая запись — JSON-объект с двумя членами:-
backtraces -
Необязательный член, присутствующий, когда доступен обратный отслеживаемый CMake-языковой трассировка для настройки
<LANG>_STANDARD. Если стандарт языка задан неявно через особенности компиляции, они используются в качестве трассировок. Возможно, что несколько особенностей компиляции потребуют одного и того же стандарта языка, поэтому может быть несколько трассировок. Значение — JSON-массив, каждая запись которого — беззнаковое целое число, 0-основанный индекс в массивеbacktraceGraphчленаnodes. -
standard -
Строка, представляющая стандарт языка.
Этот член был добавлен в версии codemodel 2.2.
-
-
compileCommandFragments -
Необязательный член, присутствующий, когда доступны фрагменты вызова компилятора. Значение — JSON-массив записей, определяющих упорядоченные фрагменты. Каждая запись — JSON-объект с одним членом:
-
fragment -
Строка, определяющая фрагмент вызова компилятора. Значение закодировано в формате командной строки целевой системы.
-
-
includes -
Необязательный член, присутствующий, когда существуют каталоги заголовочных файлов. Значение — JSON-массив с записью для каждого каталога. Каждая запись — JSON-объект с членами:
-
path -
Строка, определяющая путь к каталогу заголовочных файлов, представленный с помощью слешей.
-
isSystem -
Необязательный член, присутствующий со значением типа boolean
true, если каталог заголовочных файлов отмечен как системный. -
backtrace -
Необязательный член, присутствующий, когда доступен обратный отслеживаемый CMake-языковой трассировка для команды
target_include_directories()или других вызовов команд, добавивших данный каталог заголовочных файлов. Значение — беззнаковое целое число, 0-основанный индекс в массивеbacktraceGraphчленаnodes.
-
-
precompileHeaders -
Необязательный член, присутствующий, когда команды
target_precompile_headers()или другие вызовы команд устанавливают свойствоPRECOMPILE_HEADERSдля целевого объекта. Значение — JSON-массив с записью для каждого заголовочного файла. Каждая запись — JSON-объект с членами:-
header -
Полный путь к предварительно скомпилированному заголовочному файлу.
-
backtrace -
Необязательный член, присутствующий, когда доступен обратный отслеживаемый CMake-языковой трассировка для команды
target_precompile_headers()или других вызовов команд, добавивших данный предварительно скомпилированный заголовок. Значение — беззнаковое целое число, 0-основанный индекс в массивеbacktraceGraphчленаnodes.
Этот член был добавлен в версии codemodel 2.1.
-
-
defines -
Необязательный член, присутствующий, когда существуют предварительно заданные макросы препроцессора. Значение — JSON-массив с записью для каждого определения. Каждая запись — JSON-объект с членами:
-
define -
Строка, определяющая определение макроса препроцессора в формате
<name>[=<value>], например,DEFилиDEF=1. -
backtrace -
Необязательный член, присутствующий, когда доступен обратный отслеживаемый CMake-языковой трассировка для команды
target_compile_definitions()или других вызовов команд, добавивших это определение макроса препроцессора. Значение — беззнаковое целое число, 0-основанный индекс в массивеbacktraceGraphчленаnodes.
-
-
sysroot -
Необязательный член, присутствующий, когда определена переменная
CMAKE_SYSROOT_COMPILEилиCMAKE_SYSROOT. Значение — JSON-объект с одним членом:-
path -
Строка, определяющая абсолютный путь к sysroot, представленный с помощью слешей.
-
-
-
backtraceGraph -
"Граф отслеживаемых зависимостей" версии 2 codemodel, узлы которого ссылаются на члены
backtraceв других частях объекта "target".
"Граф отслеживаемых зависимостей" версии 2 codemodel
Член backtraceGraph объекта "каталога" версии 2 codemodel или "целевого объекта" версии 2 codemodel представляет собой JSON-объект, описывающий граф отслеживаемых зависимостей. Его узлы ссылаются на члены backtrace в содержащем объекте.
-
nodes -
Массив JSON, содержащий список узлов в графе трассировки обратного вызова. Каждый элемент — это объект JSON со следующими членами:
-
file -
Беззнаковое целое число, 0-базируемый индекс в массиве трассировки обратного вызова
files. -
line -
Необязательный член, присутствующий, когда узел представляет строку в файле. Значение — беззнаковое целое число, 1-базируемый номер строки.
-
command -
Необязательный член, присутствующий, когда узел представляет вызов команды в файле. Значение — беззнаковое целое число, 0-базируемый индекс в массиве трассировки обратного вызова
commands. -
parent -
Необязательный член, присутствующий, когда узел не является нижней частью стека вызовов. Значение — беззнаковое целое число, 0-базируемый индекс другого элемента в массиве трассировки обратного вызова
nodes.
-
-
commands -
Массив JSON, содержащий список имён команд, на которые ссылаются узлы трассировки обратного вызова. Каждый элемент — строка, определяющая имя команды.
-
files -
Массив JSON, содержащий список файлов языка CMake, на которые ссылаются узлы трассировки обратного вызова. Каждый элемент — строка, определяющая путь к файлу, представленный с использованием слешей. Если файл находится в корневом каталоге исходного кода, путь указывается относительно этого каталога. В противном случае путь абсолютный.
Тип объекта "configureLog"
Тип объекта configureLog описывает расположение и содержимое файла cmake-configure-log(7).
Существует только одна основная версия объекта configureLog, версия 1.
"configureLog" версия 1
configureLog объект версии 1 представляет собой объект JSON:
{
"kind": "configureLog",
"version": { "major": 1, "minor": 0 },
"path": "/path/to/top-level-build-dir/CMakeFiles/CMakeConfigureLog.yaml",
"eventKindNames": [ "try_compile-v1", "try_run-v1" ]
}
Члены, специфичные для объектов configureLog, включают:
-
path -
Строка, определяющая путь к файлу журнала конфигурации. Клиенты должны читать файл журнала по этому пути, который может отличаться от пути, описанного в
cmake-configure-log(7). Файл журнала может отсутствовать, если события не регистрировались. -
eventKindNames -
Массив JSON, элементы которого представляют собой строки, именующие один из версионированных типов событий
cmake-configure-log(7). В списке будет присутствовать не более одной версии каждого типа события журнала конфигурации. Хотя журнал конфигурации может содержать другие (версионированные) типы событий, клиенты должны игнорировать те, которые не указаны в этом поле.
Тип объекта "cache"
Тип объекта cache перечисляет записи кэша. Это Переменные, хранящиеся в постоянном кэше (CMakeCache.txt) для дерева сборки.
Существует только одна основная версия объекта cache, версия 2. Версии 1 не существует, чтобы избежать путаницы с версией из режима cmake-server(7).
"cache" версия 2
cache объект версии 2 представляет собой объект JSON:
{
"kind": "cache",
"version": { "major": 2, "minor": 0 },
"entries": [
{
"name": "BUILD_SHARED_LIBS",
"value": "ON",
"type": "BOOL",
"properties": [
{
"name": "HELPSTRING",
"value": "Build shared libraries"
}
]
},
{
"name": "CMAKE_GENERATOR",
"value": "Unix Makefiles",
"type": "INTERNAL",
"properties": [
{
"name": "HELPSTRING",
"value": "Name of generator."
}
]
}
]
}
Члены, специфичные для объектов cache, включают:
-
entries -
Массив JSON, элементы которого представляют собой объекты JSON, описывающие запись кэша. Члены каждого элемента:
-
name -
Строка, определяющая имя записи.
-
value -
Строка, определяющая значение записи.
-
type -
Строка, определяющая тип записи, используемый
cmake-gui(1)для выбора виджета для редактирования. -
properties -
Массив JSON, содержащий записи, определяющие связанные свойства записей кэша. Каждый элемент — это объект JSON, содержащий члены:
-
name -
Строка, определяющая имя свойства записи кэша.
-
value -
Строка, определяющая значение свойства записи кэша.
-
-
Тип объекта "cmakeFiles"
Тип объекта cmakeFiles перечисляет файлы, используемые CMake при конфигурации и генерации системы сборки. Это включают в себя файлы CMakeLists.txt и включенные файлы .cmake.
Существует только одна основная версия объекта cmakeFiles, версия 1.
"cmakeFiles" версия 1
cmakeFiles объект версии 1 представляет собой объект JSON:
{
"kind": "cmakeFiles",
"version": { "major": 1, "minor": 0 },
"paths": {
"build": "/path/to/top-level-build-dir",
"source": "/path/to/top-level-source-dir"
},
"inputs": [
{
"path": "CMakeLists.txt"
},
{
"isGenerated": true,
"path": "/path/to/top-level-build-dir/.../CMakeSystem.cmake"
},
{
"isExternal": true,
"path": "/path/to/external/third-party/module.cmake"
},
{
"isCMake": true,
"isExternal": true,
"path": "/path/to/cmake/Modules/CMakeGenericSystem.cmake"
}
]
}
Члены, специфичные для объектов cmakeFiles, включают:
-
paths -
Объект JSON, содержащий члены:
-
source -
Строка, определяющая абсолютный путь к корневому каталогу исходного кода, представленный с использованием слешей.
-
build -
Строка, определяющая абсолютный путь к корневому каталогу сборки, представленный с использованием слешей.
-
-
inputs -
Массив JSON, элементы которого представляют собой объекты JSON, определяющие входной файл, используемый CMake при конфигурации и генерации системы сборки. Члены каждого элемента:
-
path -
Строка, определяющая путь к входному файлу для CMake, представленный с использованием слешей. Если файл находится в корневом каталоге исходного кода, путь указывается относительно этого каталога. В противном случае путь абсолютный.
-
isGenerated -
Необязательный член, присутствующий со значением булевого типа
true, если путь указывает на файл, находящийся в корневом каталоге сборки, и сборка выполняется вне исходного каталога. Этот член недоступен для сборок внутри исходного каталога. -
isExternal -
Необязательный член, присутствующий со значением булевого типа
true, если путь указывает на файл, не находящийся в корневых каталогах исходного кода или сборки. -
isCMake -
Необязательный член, присутствующий со значением булевого типа
true, если путь указывает на файл в установке CMake.
-
Тип объекта "toolchains"
Тип объекта toolchains перечисляет свойства используемых в процессе сборки систем компиляции. Это включает язык, путь к компилятору, идентификатор и версию.
Существует только одна основная версия объекта toolchains, версия 1.
"toolchains" версия 1
toolchains объект версии 1 представляет собой объект JSON:
{
"kind": "toolchains",
"version": { "major": 1, "minor": 0 },
"toolchains": [
{
"language": "C",
"compiler": {
"path": "/usr/bin/cc",
"id": "GNU",
"version": "9.3.0",
"implicit": {
"includeDirectories": [
"/usr/lib/gcc/x86_64-linux-gnu/9/include",
"/usr/local/include",
"/usr/include/x86_64-linux-gnu",
"/usr/include"
],
"linkDirectories": [
"/usr/lib/gcc/x86_64-linux-gnu/9",
"/usr/lib/x86_64-linux-gnu",
"/usr/lib",
"/lib/x86_64-linux-gnu",
"/lib"
],
"linkFrameworkDirectories": [],
"linkLibraries": [ "gcc", "gcc_s", "c", "gcc", "gcc_s" ]
}
},
"sourceFileExtensions": [ "c", "m" ]
},
{
"language": "CXX",
"compiler": {
"path": "/usr/bin/c++",
"id": "GNU",
"version": "9.3.0",
"implicit": {
"includeDirectories": [
"/usr/include/c++/9",
"/usr/include/x86_64-linux-gnu/c++/9",
"/usr/include/c++/9/backward",
"/usr/lib/gcc/x86_64-linux-gnu/9/include",
"/usr/local/include",
"/usr/include/x86_64-linux-gnu",
"/usr/include"
],
"linkDirectories": [
"/usr/lib/gcc/x86_64-linux-gnu/9",
"/usr/lib/x86_64-linux-gnu",
"/usr/lib",
"/lib/x86_64-linux-gnu",
"/lib"
],
"linkFrameworkDirectories": [],
"linkLibraries": [
"stdc++", "m", "gcc_s", "gcc", "c", "gcc_s", "gcc"
]
}
},
"sourceFileExtensions": [
"C", "M", "c++", "cc", "cpp", "cxx", "mm", "CPP"
]
}
]
}
Члены, специфичные для объектов toolchains, включают:
-
toolchains -
Массив JSON, элементы которого представляют собой объекты JSON, описывающие цепочку инструментов, связанную с определённым языком. Члены каждого элемента:
-
language -
Строка JSON, определяющая язык цепочки инструментов, например, C или CXX. Имена языков совпадают с именами языков, которые могут быть переданы команде
project(). Поскольку CMake поддерживает только одну цепочку инструментов на язык, это поле может использоваться в качестве ключа. -
compiler -
Объект JSON, содержащий члены:
-
path -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILERопределена для текущего языка. Его значение — строка JSON, содержащая путь к компилятору. -
id -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILER_IDопределена для текущего языка. Его значение — строка JSON, содержащая идентификатор (GNU, MSVC и т. д.) компилятора. -
version -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILER_VERSIONопределена для текущего языка. Его значение — строка JSON, содержащая версию компилятора. -
target -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILER_TARGETопределена для текущего языка. Его значение — строка JSON, содержащая целевую систему для кросс-компиляции компилятора. -
implicit -
Объект JSON, содержащий члены:
-
includeDirectories -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIESопределена для текущего языка. Его значение — массив JSON из строк JSON, каждая из которых содержит путь к неявному каталогу включаемых файлов для компилятора. -
linkDirectories -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIESопределена для текущего языка. Его значение — массив JSON из строк JSON, каждая из которых содержит путь к неявному каталогу компоновки для компилятора. -
linkFrameworkDirectories -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIESопределена для текущего языка. Его значение — массив JSON из строк JSON, каждая из которых содержит путь к неявному каталогу компоновки фреймворков для компилятора. -
linkLibraries -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIESопределена для текущего языка. Его значение — массив JSON из строк JSON, каждая из которых содержит путь к неявному файлу компоновки для компилятора.
-
-
-
sourceFileExtensions -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_SOURCE_FILE_EXTENSIONSопределена для текущего языка. Его значение — массив JSON из строк JSON, где каждая строка содержит расширение файла (без ведущей точки) для языка.
-
© 2000–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/manual/cmake-file-api.7.html