cmake-file-api(7)
Введение
CMake предоставляет API на основе файлов, которое клиенты могут использовать для получения семантической информации о системах сборки, генерируемых CMake. Клиенты могут использовать API, записывая файлы запросов в определенное место в дереве сборки, чтобы запросить ноль или более типов объектов. Когда CMake генерирует систему сборки в этом дереве сборки, он будет читать файлы запросов и записывать файлы ответов для чтения клиентом.
API на основе файлов использует директорию <build>/.cmake/api/ в верхней части дерева сборки. API имеет версионирование, чтобы поддерживать изменения в структуре файлов внутри директории API. Версионирование структуры файлов API ортогонально версионированию типов объектов, используемых в ответах. Эта версия CMake поддерживает только одну версию API, API v1.
Добавлена в версии 3.27: Проекты также могут отправлять запросы для текущего выполнения, используя команду cmake_file_api().
API v1
API v1 размещается в директории <build>/.cmake/api/v1/. Она содержит следующие поддиректории:
-
query/ -
Содержит файлы запросов, написанные клиентами. Они могут быть v1 Общими бессостоятельными запросами файлов, v1 Бессостоятельными запросами файлов клиента или v1 Состоятельными запросами файлов клиента.
-
reply/ -
Содержит файлы ответов, записываемые CMake при каждом выполнении для генерации системы сборки. Они индексируются файлом v1 Файла индекса ответов, который может ссылаться на дополнительные v1 файлы ответов. Все файлы ответов принадлежат CMake. Клиенты никогда не должны удалять их.
Клиенты могут в любое время искать и читать файл индекса ответов. Клиенты могут по желанию создать директорию
reply/в любое время и отслеживать её на появление нового файла индекса ответов.
Добавлена в версии 3.31: Пользователи могут добавить файлы запросов в api/v1/query внутри CMAKE_CONFIG_DIR, чтобы создать запросы для всех проектов CMake.
v1 Общие бессостоятельные запросы файлов
Общие бессостоятельные запросы файлов позволяют клиентам совместно запрашивать основные версии типов объектов и получать все распознанные CMake версии.
Клиенты могут создавать общие запросы, создавая пустые файлы в директории v1/query/. Формат:
<build>/.cmake/api/v1/query/<kind>-v<major>
где <kind> — один из типов объектов, -v — литерал, и <major> — номер основной версии.
Файлы такого формата представляют собой бессостоятельные общие запросы, не принадлежащие ни одному конкретному клиенту. После создания их не следует удалять без внешней координации клиента или вмешательства человека.
v1 Бессостоятельные запросы файлов клиента
Бессостоятельные запросы файлов клиента позволяют клиентам создавать запросы на основные версии типов объектов и получать все распознанные CMake версии.
Клиенты могут создавать собственные запросы, создавая пустые файлы в поддиректориях запросов, специфичных для клиента. Формат:
<build>/.cmake/api/v1/query/client-<client>/<kind>-v<major>
где client- — литерал, <client> — строка, уникально идентифицирующая клиента, <kind> — один из типов объектов, -v — литерал, и <major> — номер основной версии. Каждый клиент должен выбрать уникальный идентификатор <client> своими средствами.
Файлы такого формата — это бессостоятельные запросы, принадлежащие клиенту <client>. Владеющий клиент может удалять их в любое время.
v1 Состоятельные запросы файлов клиента
Состоятельные запросы файлов позволяют клиентам запрашивать список версий каждого типа объектов и получать только последнюю версию, распознанную запущенным CMake.
Клиенты могут создавать собственные состоятельные запросы, создавая файлы query.json в поддиректориях запросов, специфичных для клиента. Формат:
<build>/.cmake/api/v1/query/client-<client>/query.json
где client- — литерал, <client> — строка, уникально идентифицирующая клиента, и query.json — литерал. Каждый клиент должен выбрать уникальный идентификатор <client> своими средствами.
Файлы query.json — это состоятельные запросы, принадлежащие клиенту <client>. Владеющий клиент может обновлять или удалять их в любое время. При обновлении клиентской установки он может обновить состоятельный запрос, записываемый в деревья сборки, для запроса новых версий объектов. Это позволяет избежать ненужного запроса CMake для генерации нескольких версий объектов.
Файл query.json должен содержать JSON-объект:
{
"requests": [
{ "kind": "<kind>" , "version": 1 },
{ "kind": "<kind>" , "version": { "major": 1, "minor": 2 } },
{ "kind": "<kind>" , "version": [2, 1] },
{ "kind": "<kind>" , "version": [2, { "major": 1, "minor": 2 }] },
{ "kind": "<kind>" , "version": 1, "client": {} },
{ "kind": "..." }
],
"client": {}
}
Члены:
-
requests -
JSON-массив, содержащий ноль или более запросов. Каждый запрос — JSON-объект с членами:
-
kind -
Указывает один из типов объектов, который следует включить в ответ.
-
version -
Указывает версию(и) типа объекта, которую понимает клиент. Версии имеют главную и второстепенную компоненты, следуя соглашениям о семантической версии. Значение должно быть
- целым JSON-числом, определяющим номер основной версии (неотрицательное), или
- JSON-объектом, содержащим
majorи (необязательно)minorчлены, определяющие целочисленные компоненты версии, или - JSON-массивом, элементы которого — каждое из вышеперечисленных.
-
client -
Необязательный член, зарезервированный для использования клиентом. Это значение сохраняется в ответе, написанном для клиента в v1 файле индекса ответов, но в остальном игнорируется. Клиенты могут использовать это для передачи настраиваемой информации с запросом в ответ.
Для каждого запрошенного типа объекта CMake выберет первую версию, которую он распознает для этого типа среди перечисленных в запросе. Ответ будет использовать выбранную главную версию с самой высокой второстепенной версией, известной выполняемому CMake для этой основной версии. Поэтому клиенты должны перечислить все поддерживаемые основные версии в порядке предпочтения вместе с минимальной второстепенной версией, требуемой для каждой основной версии.
-
-
client -
Необязательный член, зарезервированный для использования клиентом. Это значение сохраняется в ответе, написанном для клиента в v1 файле индекса ответов, но в остальном игнорируется. Клиенты могут использовать это для передачи настраиваемой информации с запросом в ответ.
Другие query.json члены верхнего уровня зарезервированы для будущего использования. Если они присутствуют, они игнорируются для обратной совместимости.
v1 Файл индекса ответов
CMake записывает файл index-*.json в директорию v1/reply/ при каждом выполнении для генерации системы сборки. Клиенты должны сначала прочитать файл индекса ответов и могут прочитать другие v1 файлы ответов только по ссылкам. Формат имени файла индекса ответов:
<build>/.cmake/api/v1/reply/index-<unspecified>.json
где index- — литерал, и <unspecified> — неопределённое имя, выбранное CMake. При каждом создании нового файла индекса ему присваивается новое имя, а все старые удаляются. В течение короткого времени между этими этапами могут присутствовать несколько файлов индекса; файл индекса, имеющий наибольшее имя в лексикографическом порядке, является текущим файлом индекса.
Файл индекса ответов содержит JSON-объект:
{
"cmake": {
"version": {
"major": 3, "minor": 14, "patch": 0, "suffix": "",
"string": "3.14.0", "isDirty": false
},
"paths": {
"cmake": "/prefix/bin/cmake",
"ctest": "/prefix/bin/ctest",
"cpack": "/prefix/bin/cpack",
"root": "/prefix/share/cmake-3.14"
},
"generator": {
"multiConfig": false,
"name": "Unix Makefiles"
}
},
"objects": [
{ "kind": "<kind>",
"version": { "major": 1, "minor": 0 },
"jsonFile": "<file>" },
{ "...": "..." }
],
"reply": {
"<kind>-v<major>": { "kind": "<kind>",
"version": { "major": 1, "minor": 0 },
"jsonFile": "<file>" },
"<unknown>": { "error": "unknown query file" },
"...": {},
"client-<client>": {
"<kind>-v<major>": { "kind": "<kind>",
"version": { "major": 1, "minor": 0 },
"jsonFile": "<file>" },
"<unknown>": { "error": "unknown query file" },
"...": {},
"query.json": {
"requests": [ {}, {}, {} ],
"responses": [
{ "kind": "<kind>",
"version": { "major": 1, "minor": 0 },
"jsonFile": "<file>" },
{ "error": "unknown query file" },
{ "...": {} }
],
"client": {}
}
}
}
}
Члены:
-
cmake -
Объект JSON, содержащий информацию об экземпляре CMake, сгенерировавшем ответ. Он содержит члены:
-
version -
Объект JSON, определяющий версию CMake с членами:
-
major, minor, patch -
Целочисленные значения, определяющие основные, второстепенные и поправочные компоненты версии.
-
suffix -
Строка, определяющая суффикс версии, если таковой имеется, например
g0abc3. -
string -
Строка, определяющая полную версию в формате
<major>.<minor>.<patch>[-<suffix>]. -
isDirty -
Булево значение, указывающее, была ли версия построена из дерева источников с поддержкой версионирования с локальными изменениями.
-
-
paths -
Объект JSON, определяющий пути к компонентам CMake. Он содержит члены для cmake, ctest и cpack, значения которых являются строками JSON, определяющими абсолютный путь к каждому инструменту, представленный с помощью слешей. Он также имеет член
rootдля абсолютного пути к каталогу, содержащему ресурсы CMake, такие как каталогModules/(см.CMAKE_ROOT). -
generator -
Объект JSON, описывающий генератор CMake, используемый для сборки. Он содержит члены:
-
multiConfig -
Булево значение, определяющее, поддерживает ли генератор несколько конфигураций вывода.
-
name -
Строка, определяющая имя генератора.
-
platform -
Если генератор поддерживает
CMAKE_GENERATOR_PLATFORM, это строка, определяющая имя платформы генератора.
-
-
-
objects -
Массив JSON, содержащий список всех версий всех видов объектов, сгенерированных в ответ. Каждый элемент массива — ссылка на файл ответа v1.
-
reply -
Объект JSON, отображающий содержимое каталога
query/, загруженного CMake для получения ответа. Члены имеют вид-
<kind>-v<major> -
Элемент в этом формате появляется для каждого из файлов запросов v1 общего состояния, распознанных CMake как запрос на вид объекта
<kind>с основной версией<major>. Значение — ссылка на файл ответа v1 на соответствующий файл ответа для этого вида объекта и версии. -
<unknown> -
Элемент в этом формате появляется для каждого из файлов запросов v1 общего состояния, которые CMake не распознал. Значение — объект JSON с единственным членом
error, содержащим строку с сообщением об ошибке, указывающей, что файл запроса неизвестен. -
client-<client> -
Элемент в этом формате появляется для каждого каталога, принадлежащего клиенту, содержащего файлы запросов v1 без состояния клиента. Значение — объект JSON, отображающий содержимое каталога
query/client-<client>/. Члены имеют вид:-
<kind>-v<major> -
Элемент в этом формате появляется для каждого из файлов запросов v1 без состояния клиента, распознанных CMake как запрос на вид объекта
<kind>с основной версией<major>. Значение — ссылка на файл ответа v1 на соответствующий файл ответа для этого вида объекта и версии. -
<unknown> -
Элемент в этом формате появляется для каждого из файлов запросов v1 без состояния клиента, которые CMake не распознал. Значение — объект JSON с единственным членом
error, содержащим строку с сообщением об ошибке, указывающей, что файл запроса неизвестен. -
query.json -
Этот член появляется для клиентов, использующих файлы запросов v1 с состоянием клиента. Если файл
query.jsonне удалось прочитать или разобрать как объект JSON, этот член является объектом JSON с единственным членомerror, содержащим строку с сообщением об ошибке. В противном случае этот член — объект JSON, отображающий содержимое файлаquery.json. Члены:-
client -
Копия файла
query.jsonclientчлен, если он существует. -
requests -
Копия файла
query.jsonrequestsчлен, если он существует. -
responses -
Если член
query.jsonфайлаrequestsотсутствует или недействителен, этот член — объект JSON с единственным членомerror, содержащим строку с сообщением об ошибке. В противном случае этот член содержит массив JSON с ответом для каждого элемента массиваrequests, в том же порядке. Каждый ответ:- объект JSON с единственным членом
error, содержащим строку с сообщением об ошибке, или - ссылка на файл ответа v1 на соответствующий файл ответа для запрошенного вида объекта и выбранной версии.
- объект JSON с единственным членом
-
-
-
После чтения файла индекса ответов клиенты могут прочитать другие файлы ответов v1, на которые он ссылается.
Ссылка на файл ответа v1
Файл индекса ответов представляет каждую ссылку на другой файл ответов с помощью объекта JSON с членами:
-
kind -
Строка, определяющая один из видов объектов.
-
version -
Объект JSON с членами
majorиminor, определяющими целочисленные компоненты версии вида объекта. -
jsonFile -
Строка JSON, определяющая путь, относящийся к файлу индекса ответов, к другому файлу JSON, содержащему объект.
Файлы ответов v1
Файлы ответов, содержащие определённые виды объектов, записываются CMake. Имена этих файлов не определены и не должны интерпретироваться клиентами. Клиенты должны сначала прочитать файл индекса ответов v1 и следовать ссылкам на имена нужных объектов ответа.
Файлы ответов (включая индексный файл) никогда не будут заменены файлами с тем же именем, но другим содержимым. Это позволяет клиенту читать файлы одновременно с работающим CMake, который может сгенерировать новый ответ. Однако после генерации нового ответа CMake попытается удалить файлы ответов из предыдущих запусков, которые он не только что записал. Если клиент пытается прочитать файл ответа, на который ссылается индекс, но находит его отсутствующим, это означает, что параллельный CMake сгенерировал новый ответ. Клиент может просто начать сначала, прочитав новый индексный файл ответов.
Виды объектов
API CMake на основе файлов сообщает семантическую информацию о системе сборки, используя следующие типы объектов JSON. Каждый тип объекта имеет версию, независимую от других, использующую семантическое версионирование с основными и второстепенными компонентами. Каждый тип объекта имеет вид:
{
"kind": "<kind>",
"version": { "major": 1, "minor": 0 },
"...": {}
}
Член kind — это строка, определяющая имя вида объекта. Член version — это объект JSON с членами major и minor, определяющими целочисленные компоненты версии вида объекта. Дополнительные члены верхнего уровня специфичны для каждого вида объекта.
Вид объекта "codemodel"
Вид объекта codemodel описывает структуру системы сборки, смоделированную CMake.
Существует только одна основная версия объекта codemodel, версия 2. Версии 1 не существует, чтобы избежать путаницы с версией из режима cmake-server(7).
"codemodel" версия 2
Объект версии 2 codemodel — это объект JSON:
{
"kind": "codemodel",
"version": { "major": 2, "minor": 7 },
"paths": {
"source": "/path/to/top-level-source-dir",
"build": "/path/to/top-level-build-dir"
},
"configurations": [
{
"name": "Debug",
"directories": [
{
"source": ".",
"build": ".",
"childIndexes": [ 1 ],
"projectIndex": 0,
"targetIndexes": [ 0 ],
"hasInstallRule": true,
"minimumCMakeVersion": {
"string": "3.14"
},
"jsonFile": "<file>"
},
{
"source": "sub",
"build": "sub",
"parentIndex": 0,
"projectIndex": 0,
"targetIndexes": [ 1 ],
"minimumCMakeVersion": {
"string": "3.14"
},
"jsonFile": "<file>"
}
],
"projects": [
{
"name": "MyProject",
"directoryIndexes": [ 0, 1 ],
"targetIndexes": [ 0, 1 ]
}
],
"targets": [
{
"name": "MyExecutable",
"directoryIndex": 0,
"projectIndex": 0,
"jsonFile": "<file>"
},
{
"name": "MyLibrary",
"directoryIndex": 1,
"projectIndex": 0,
"jsonFile": "<file>"
}
]
}
]
}
Члены, специфичные для объектов codemodel:
-
paths -
Объект JSON, содержащий члены:
-
source -
Строка, указывающая абсолютный путь к верхнеуровневой исходной директории, представленный с помощью слешей.
-
build -
Строка, указывающая абсолютный путь к верхнеуровневой директории сборки, представленный с помощью слешей.
-
-
configurations -
Массив JSON из записей, соответствующих доступным конфигурациям сборки. В генераторах с одной конфигурацией есть одна запись для значения переменной
CMAKE_BUILD_TYPE. В генераторах с множеством конфигураций есть запись для каждой конфигурации, перечисленных в переменнойCMAKE_CONFIGURATION_TYPES. Каждая запись — объект JSON, содержащий члены:-
name -
Строка, указывающая имя конфигурации, например
Debug. -
directories -
Массив JSON из записей, каждая из которых соответствует директории системы сборки, исходная директория которой содержит файл
CMakeLists.txt. Первая запись соответствует верхнеуровневой директории. Каждая запись — объект JSON, содержащий члены:-
source -
Строка, указывающая путь к исходной директории, представленный с помощью слешей. Если директория находится внутри верхнеуровневой исходной директории, то путь указан относительно этой директории (с
.для самой верхнеуровневой исходной директории). В противном случае путь абсолютный. -
build -
Строка, указывающая путь к директории сборки, представленный с помощью слешей. Если директория находится внутри верхнеуровневой директории сборки, то путь указан относительно этой директории (с
.для самой верхнеуровневой директории сборки). В противном случае путь абсолютный. -
parentIndex -
Необязательный член, присутствующий, когда директория не верхнеуровневая. Значение — целое без знака, индекс (от 0) другой записи в основном массиве
directories, соответствующей родительской директории, которая добавила эту директорию как поддиректорию. -
childIndexes -
Необязательный член, присутствующий, когда директория имеет поддиректории. Значение — массив JSON из записей, соответствующих поддиректориям, созданным командой
add_subdirectory()илиsubdirs(). Каждая запись — целое без знака, индекс (от 0) другой записи в основном массивеdirectories. -
projectIndex -
Целое без знака, индекс (от 0) в основном массиве
projects, указывающий проект системы сборки, к которому принадлежит данная директория. -
targetIndexes -
Необязательный член, присутствующий, когда у самой директории есть цели, исключая те, которые принадлежат поддиректориям. Значение — массив JSON из записей, соответствующих целям. Каждая запись — целое без знака, индекс (от 0) в основном массиве
targets. -
minimumCMakeVersion -
Необязательный член, присутствующий, когда известна минимальная требуемая версия CMake для директории. Это версия
<min>, заданная в самом локальном вызове командыcmake_minimum_required(VERSION)в директории или одном из ее предков. Значение — объект JSON с одним членом:-
string -
Строка, указывающая минимальную требуемую версию в формате:
<major>.<minor>[.<patch>[.<tweak>]][<suffix>]
Каждый компонент — целое без знака, и суффикс может быть произвольной строкой.
-
-
hasInstallRule -
Необязательный член, присутствующий со значением булевого типа
true, когда директория или одна из ее поддиректорий содержит правилаinstall(), т.е. доступно правилоmake installили эквивалентное. -
jsonFile -
Строка JSON, указывающая путь относительно файла codemodel к другому файлу JSON, содержащему объект «codemodel» версии 2 «directory».
Этот поле был добавлен в версии 2.3 codemodel.
-
-
projects -
Массив JSON из записей, соответствующих верхнеуровневому проекту и подпроектам, определённым в системе сборки. Каждый (под-)проект соответствует исходной директории, в файле которой
CMakeLists.txtвызывается командаproject()с именем проекта, отличным от имени родительской директории. Первая запись соответствует верхнеуровневому проекту.Каждая запись — объект JSON, содержащий члены:
-
name -
Строка, указывающая имя, заданное команде
project(). -
parentIndex -
Необязательный член, присутствующий, когда проект не верхнеуровневый. Значение — целое без знака, индекс (от 0) другой записи в основном массиве
projects, соответствующей родительскому проекту, который добавил этот проект как подпроект. -
childIndexes -
Необязательный член, присутствующий, когда проект имеет подпроекты. Значение — массив JSON из записей, соответствующих подпроектам. Каждая запись — целое без знака, индекс (от 0) другой записи в основном массиве
projects. -
directoryIndexes -
Массив JSON из записей, соответствующих директориям системы сборки, которые являются частью проекта. Первая запись соответствует верхнеуровневой директории проекта. Каждая запись — целое без знака, индекс (от 0) в основном массиве
directories. -
targetIndexes -
Необязательный член, присутствующий, когда у проекта есть цели, исключая те, которые принадлежат подпроектам. Значение — массив JSON из записей, соответствующих целям. Каждая запись — целое без знака, индекс (от 0) в основном массиве
targets.
-
-
targets -
Массив JSON из записей, соответствующих целям системы сборки. Такие цели создаются вызовами
add_executable(),add_library()иadd_custom_target(), исключая импортированные цели и интерфейсные библиотеки (которые не генерируют правила сборки). Каждая запись — объект JSON, содержащий члены:-
name -
Строка, указывающая имя цели.
-
id -
Строка, уникально идентифицирующая цель. Она соответствует полю
idв файле, на который ссылаетсяjsonFile. -
directoryIndex -
Целое без знака, индекс (от 0) в основном массиве
directories, указывающий директорию системы сборки, в которой определена цель. -
projectIndex -
Целое без знака, индекс (от 0) в основном массиве
projects, указывающий проект системы сборки, в котором определена цель. -
jsonFile -
Строка JSON, указывающая путь относительно файла codemodel к другому файлу JSON, содержащему объект «codemodel» версии 2 «target».
-
-
Объект "codemodel" версии 2 "directory"
Объект codemodel "directory" ссылается на массив directories объекта "codemodel" версии 2. Каждый объект "directory" — объект JSON с членами:
-
paths -
Объект JSON, содержащий члены:
-
source -
Строка, указывающая путь к исходной директории, представленный с помощью слешей. Если директория находится внутри верхнеуровневой исходной директории, то путь указан относительно этой директории (с
.для самой верхнеуровневой исходной директории). В противном случае путь абсолютный. -
build -
Строка, указывающая путь к директории сборки, представленный с помощью слешей. Если директория находится внутри верхнеуровневой директории сборки, то путь указан относительно этой директории (с
.для самой верхнеуровневой директории сборки). В противном случае путь абсолютный.
-
-
installers -
Массив JSON из записей, соответствующих правилам
install(). Каждая запись — объект JSON, содержащий члены:
-
component -
Строка, определяющая компонент, выбранный соответствующим вызовом команды
install(). -
destination -
Необязательный член, присутствующий для определённых значений
typeниже. Значение — строка, определяющая путь назначения установки. Путь может быть абсолютным или относительным к префиксу установки. -
paths -
Необязательный член, присутствующий для определённых значений
typeниже. Значение — JSON-массив записей, соответствующих путям (файлам или каталогам) для установки. Каждая запись — одна из:- Строка, определяющая путь, откуда устанавливается файл или каталог. Часть пути, не предшествующая
/, также определяет путь (имя), по которому файл или каталог устанавливаются в каталоге назначения. -
JSON-объект с членами:
-
from -
Строка, определяющая путь, откуда устанавливается файл или каталог.
-
to -
Строка, определяющая путь, по которому файл или каталог устанавливается в каталоге назначения.
-
В обоих случаях пути представлены с использованием обратных слэшей. Если путь «откуда» находится внутри каталога верхнего уровня, описанного соответствующим значением
type, то путь указывается относительно этого каталога. В противном случае путь является абсолютным. - Строка, определяющая путь, откуда устанавливается файл или каталог. Часть пути, не предшествующая
-
type -
Строка, определяющая тип правила установки. Значение — одно из следующих, некоторые варианты предоставляют дополнительные члены:
-
file -
Вызов
install(FILES)илиinstall(PROGRAMS). Членыdestinationиpathsзаполнены, при этом пути под каталогом верхнего уровня source выражаются относительно него. ЧленisOptionalможет существовать. Этот тип не имеет дополнительных членов. -
directory -
Вызов
install(DIRECTORY). Членыdestinationиpathsзаполнены, при этом пути под каталогом верхнего уровня source выражаются относительно него. ЧленisOptionalможет существовать. Этот тип не имеет дополнительных членов. -
target -
Вызов
install(TARGETS). Членыdestinationиpathsзаполнены, при этом пути под каталогом верхнего уровня build выражаются относительно него. ЧленisOptionalможет существовать. Этот тип имеет дополнительные членыtargetId,targetIndex,targetIsImportLibrary, иtargetInstallNamelink. -
export -
Вызов
install(EXPORT). Членыdestinationиpathsзаполнены, при этом пути под каталогом верхнего уровня build выражаются относительно него. Записиpathsотносятся к файлам, сгенерированным автоматически CMake для установки, и их фактические значения считаются частными деталями реализации. Этот тип имеет дополнительные членыexportNameиexportTargets. -
script -
Вызов
install(SCRIPT). Этот тип имеет дополнительный членscriptFile. -
code -
Вызов
install(CODE). Этот тип не имеет дополнительных членов. -
importedRuntimeArtifacts -
Вызов
install(IMPORTED_RUNTIME_ARTIFACTS). Заполнен членdestination. ЧленisOptionalможет существовать. Этот тип не имеет дополнительных членов. -
runtimeDependencySet -
Вызов
install(RUNTIME_DEPENDENCY_SET)или вызовinstall(TARGETS)сRUNTIME_DEPENDENCIES. Заполнен членdestination. Этот тип имеет дополнительные членыruntimeDependencySetNameиruntimeDependencySetType. -
fileSet -
Вызов
install(TARGETS)сFILE_SET. Заполнены членыdestinationиpaths. ЧленisOptionalможет существовать. Этот тип имеет дополнительные членыfileSetName,fileSetType,fileSetDirectories, иfileSetTarget.Этот тип был добавлен в версии codemodel 2.4.
-
-
isExcludeFromAll -
Необязательный член, присутствующий с булевым значением
trueпри вызовеinstall()с опциейEXCLUDE_FROM_ALL. -
isForAllComponents -
Необязательный член, присутствующий с булевым значением
trueпри вызовеinstall(SCRIPT|CODE)с опциейALL_COMPONENTS. -
isOptional -
Необязательный член, присутствующий с булевым значением
trueпри вызовеinstall()с опциейOPTIONALЭто разрешается, когдаtypeравноfile,directory, илиtarget. -
targetId -
Необязательный член, присутствующий, когда
typeравноtargetЗначение — строка, уникально идентифицирующая целевой объект для установки. Соответствует членуidцелевого объекта в массивеtargetsосновного объекта "codemodel". -
targetIndex -
Необязательный член, присутствующий, когда
typeравноtargetЗначение — беззнаковое целое число, 0-базированный индекс в массивеtargetsосновного объекта "codemodel" для устанавливаемого целевого объекта. -
targetIsImportLibrary -
Необязательный член, присутствующий, когда
typeравноtargetи установщик предназначен для файла библиотеки импорта DLL Windows или файла импорта линкера AIX. При наличии, имеет булево значениеtrue. -
targetInstallNamelink -
Необязательный член, присутствующий, когда
typeравноtargetи установщик соответствует целевому объекту, который может использовать символические ссылки для реализации свойств целевых объектовVERSIONиSOVERSION. Значение — строка, указывающая, как установщик должен обрабатывать символические ссылки:skipозначает, что установщик должен пропустить символические ссылки и установить только реальный файл, аonlyозначает, что установщик должен установить только символические ссылки, а не реальный файл. Во всех случаях членpathsуказывает, что фактически устанавливается. -
exportName -
Необязательный член, присутствующий, когда
typeравноexportЗначение — строка, определяющая имя экспорта. -
exportTargets -
Необязательный член, присутствующий, когда
typeравноexportЗначение — JSON-массив записей, соответствующих целевым объектам, включённым в экспорт. Каждая запись — JSON-объект с членами:-
id -
Строка, уникально идентифицирующая целевой объект. Соответствует члену
idцелевого объекта в массивеtargetsосновного объекта "codemodel". -
index -
Беззнаковое целое число, 0-базированный индекс в массиве
targetsосновного объекта "codemodel" для целевого объекта.
-
-
runtimeDependencySetName -
Необязательный член, присутствующий, когда
typeравноruntimeDependencySetи установщик был создан вызовомinstall(RUNTIME_DEPENDENCY_SET). Значение — строка, определяющая имя набора зависимостей времени выполнения, которое было установлено. -
runtimeDependencySetType -
Необязательный член, присутствующий, когда
typeравноruntimeDependencySetЗначение — строка с одним из следующих значений:-
library -
Указывает, что этот установщик устанавливает зависимости, которые не являются macOS-фреймворками.
-
framework -
Указывает, что этот установщик устанавливает зависимости, которые являются macOS-фреймворками.
-
-
fileSetName -
Необязательный член, присутствующий, когда
typeравноfileSetЗначение — строка с именем набора файлов.Это поле было добавлено в версии codemodel 2.4.
-
fileSetType -
Необязательный член, присутствующий, когда
typeравноfileSetЗначение — строка с типом набора файлов.Это поле было добавлено в версии codemodel 2.4.
-
fileSetDirectories
-
-
Необязательный член, присутствующий, когда
typeравноfileSet. Значение — список строк с базовыми каталогами набора файлов (определяются с помощью genex-оценкиHEADER_DIRSилиHEADER_DIRS_<NAME>).Это поле было добавлено в версии codemodel 2.4.
-
fileSetTarget -
Необязательный член, присутствующий, когда
typeравноfileSet. Значение — JSON-объект с членами:-
id -
Строка, уникально идентифицирующая целевой объект. Соответствует члену
idцелевого объекта в массивеtargetsосновного объекта "codemodel". -
index -
Беззнаковое целое число, 0-индексированный индекс в массиве
targetsосновного объекта "codemodel" для целевого объекта.
Это поле было добавлено в версии codemodel 2.4.
-
-
scriptFile -
Необязательный член, присутствующий, когда
typeравноscript. Значение — строка, указывающая путь к файлу скрипта на диске, представленный с использованием слешей. Если файл находится в корневой директории исходных данных, путь указывается относительно этой директории. В противном случае путь является абсолютным. -
backtrace -
Необязательный член, присутствующий, когда доступен трассировка CMake языка до
install()или вызова другого командного интерпретатора, который добавил этот установщик. Значение — беззнаковое целое число, 0-индексированный индекс в массивеnodesчленаbacktraceGraph.
-
-
backtraceGraph -
Граф обратной трассировки "codemodel" версии 2, узлы которого ссылаются на члены
backtraceв других частях объекта "directory".
Объект "codemodel" версии 2 "target"
Объект "codemodel" "target" ссылается на массив targets объекта "codemodel" версии 2. Каждый объект "target" — это JSON-объект с членами:
-
name -
Строка, определяющая логическое имя целевого объекта.
-
id -
Строка, однозначно идентифицирующая целевой объект. Формат не определён и не должен интерпретироваться клиентами.
-
type -
Строка, определяющая тип целевого объекта. Значение должно быть одним из
EXECUTABLE,STATIC_LIBRARY,SHARED_LIBRARY,MODULE_LIBRARY,OBJECT_LIBRARY,INTERFACE_LIBRARY, илиUTILITY. -
backtrace -
Необязательный член, присутствующий, когда доступен стек отладки CMake-языка, ведущий к команде в исходном коде, которая создала целевой объект. Значение — это беззнаковое целое число, 0-основанный индекс в массиве
backtraceGraphчленаnodes. -
folder -
Необязательный член, присутствующий, когда свойство целевого объекта
FOLDERустановлено. Значение — это JSON-объект с одним членом:-
name -
Строка, определяющая имя папки целевого объекта.
-
-
paths -
JSON-объект, содержащий члены:
-
source -
Строка, определяющая путь к каталогу исходных файлов целевого объекта, представленный с помощью слешей. Если каталог находится внутри основного каталога исходных файлов, путь указывается относительно этого каталога (с
.для самого основного каталога исходных файлов). В противном случае путь абсолютный. -
build -
Строка, определяющая путь к каталогу сборки целевого объекта, представленный с помощью слешей. Если каталог находится внутри основного каталога сборки, путь указывается относительно этого каталога (с
.для самого основного каталога сборки). В противном случае путь абсолютный.
-
-
nameOnDisk -
Необязательный член, присутствующий для исполняемых и библиотечных целевых объектов, которые связаны или архивированы в один основной артефакт. Значение — это строка, определяющая имя файла этого артефакта на диске.
-
artifacts -
Необязательный член, присутствующий для исполняемых и библиотечных целевых объектов, которые производят артефакты на диске, предназначенные для использования зависимыми объектами. Значение — JSON-массив записей, соответствующих артефактам. Каждая запись — JSON-объект, содержащий один член:
-
path -
Строка, определяющая путь к файлу на диске, представленный с помощью слешей. Если файл находится внутри основного каталога сборки, путь указывается относительно этого каталога. В противном случае путь абсолютный.
-
-
isGeneratorProvided -
Необязательный член, присутствующий с булевым значением
true, если целевой объект предоставляется генератором системы сборки CMake, а не командой в исходном коде. -
install -
Необязательный член, присутствующий, когда целевой объект имеет правило
install(). Значение — JSON-объект с членами:-
prefix -
JSON-объект, определяющий префикс установки. Он имеет один член:
-
path -
Строка, определяющая значение
CMAKE_INSTALL_PREFIX.
-
-
destinations -
JSON-массив записей, определяющих путь назначения установки. Каждая запись — JSON-объект с членами:
-
path -
Строка, определяющая путь назначения установки. Путь может быть абсолютным или относительным к префиксу установки.
-
backtrace -
Необязательный член, присутствующий, когда доступен стек отладки CMake-языка, ведущий к вызову команды
install(), указавшей этот путь назначения. Значение — беззнаковое целое число, 0-основанный индекс в массивеbacktraceGraphчленаnodes.
-
-
-
launchers -
Необязательный член, присутствующий у исполняемых целевых объектов, для которых указан хотя бы один запуск, заданный проектом. Значение — JSON-массив записей, соответствующих указанным запускам. Каждая запись — JSON-объект с членами:
-
command -
Строка, определяющая путь к запускающему файлу на диске, представленный с помощью слешей. Если файл находится внутри основного каталога исходных файлов, путь указывается относительно этого каталога.
-
arguments -
Необязательный член, присутствующий, когда у команды запуска есть аргументы, предшествующие исполняемому файлу, подлежащему запуску. Значение — JSON-массив строк, представляющих аргументы.
-
type -
Строка, определяющая тип запускающего файла. Значение должно быть одним из следующих:
-
emulator -
Эмулятор для целевой платформы при кросс-компиляции. См. свойство целевого объекта
CROSSCOMPILING_EMULATOR. -
test -
Программа запуска для выполнения тестов. См. свойство целевого объекта
TEST_LAUNCHER.
-
Этот член был добавлен в версии codemodel 2.7.
-
-
link -
Необязательный член, присутствующий для исполняемых и динамических библиотек, которые связаны с исполняемым файлом времени выполнения. Значение — JSON-объект с членами, описывающими этап связи:
-
language -
Строка, определяющая язык (например,
C,CXX,Fortran) инструментальной цепочки, используемой для вызова компоновщика. -
commandFragments -
Необязательный член, присутствующий, когда доступны фрагменты вызова командной строки компоновщика. Значение — JSON-массив записей, определяющих упорядоченные фрагменты. Каждая запись — JSON-объект с членами:
-
fragment -
Строка, определяющая фрагмент вызова командной строки компоновщика. Значение закодировано в формате командной строки системной сборки.
-
role -
Строка, определяющая роль содержимого фрагмента:
-
flags: флаги компоновки. -
libraries: пути или флаги библиотек компоновки. -
libraryPath: флаги путей поиска библиотек. -
frameworkPath: флаги путей поиска macOS-фреймворков.
-
-
-
lto -
Необязательный член, присутствующий с булевым значением
true, когда включена оптимизация в момент компоновки (иначе межпроцедурная оптимизация или генерация кода в момент компоновки). -
sysroot -
Необязательный член, присутствующий, когда определена переменная
CMAKE_SYSROOT_LINKилиCMAKE_SYSROOT. Значение — JSON-объект с одним членом:-
path -
Строка, определяющая абсолютный путь к sysroot, представленный с помощью слешей.
-
-
-
archive -
Необязательный член, присутствующий для целевых объектов статической библиотеки. Значение — JSON-объект с членами, описывающими этап архивирования:
-
commandFragments -
Необязательный член, присутствующий, когда доступны фрагменты вызова командной строки архиватора. Значение — JSON-массив записей, определяющих фрагменты. Каждая запись — JSON-объект с членами:
-
fragment -
Строка, определяющая фрагмент вызова командной строки архиватора. Значение закодировано в формате командной строки системной сборки.
-
role -
Строка, определяющая роль содержимого фрагмента:
-
flags: флаги архиватора.
-
-
-
lto -
Необязательный член, присутствующий с булевым значением
true, когда включена оптимизация в момент компоновки (иначе межпроцедурная оптимизация или генерация кода в момент компоновки).
-
-
dependencies -
Необязательный член, присутствующий, когда целевой объект зависит от других целевых объектов. Значение — JSON-массив записей, соответствующих зависимостям. Каждая запись — JSON-объект с членами:
-
id -
Строка, однозначно идентифицирующая целевой объект, от которого зависит этот целевой объект. Соответствует члену
idдругого целевого объекта. -
backtrace -
Необязательный член, присутствующий, когда доступен стек отладки CMake-языка, ведущий к вызову команды
add_dependencies(),target_link_libraries(), или другой команды, создавшей эту зависимость. Значение — беззнаковое целое число, 0-основанный индекс в массивеbacktraceGraphчленаnodes.
-
-
fileSets
-
Массив JSON, содержащий записи, соответствующие наборам файлов целевого объекта. Каждая запись — это объект JSON с членами:
-
name -
Строка, определяющая имя набора файлов.
-
type -
Строка, определяющая тип набора файлов. См.
target_sources()поддерживаемые типы наборов файлов. -
visibility -
Строка, определяющая видимость набора файлов; одна из
PUBLIC,PRIVATE, илиINTERFACE. -
baseDirectories -
Массив JSON строк, каждая из которых определяет базовый каталог, содержащий исходные файлы в наборе файлов. Если каталог находится внутри каталога исходных файлов верхнего уровня, путь задаётся относительно этого каталога. В противном случае путь является абсолютным.
Это поле было добавлено в версии codemodel 2.5.
-
-
sources -
Массив JSON, содержащий записи, соответствующие исходным файлам целевого объекта. Каждая запись — это объект JSON с членами:
-
path -
Строка, определяющая путь к исходному файлу на диске, представленный с помощью слешей. Если файл находится внутри каталога исходных файлов верхнего уровня, путь задаётся относительно этого каталога. В противном случае путь является абсолютным.
-
compileGroupIndex -
Необязательный член, присутствующий при компиляции исходного файла. Значение — целое без знака, индекс с нуля в массиве
compileGroups. -
sourceGroupIndex -
Необязательный член, присутствующий, когда исходный файл является частью группы исходных файлов, либо через команду
source_group(), либо по умолчанию. Значение — целое без знака, индекс с нуля в массивеsourceGroups. -
isGenerated -
Необязательный член, присутствующий со значением булевого типа
true, если исходный файл являетсяGENERATED. -
fileSetIndex -
Необязательный член, присутствующий, когда исходный файл является частью набора файлов. Значение — целое без знака, индекс с нуля в массиве
fileSets.Это поле было добавлено в версии codemodel 2.5.
-
backtrace -
Необязательный член, присутствующий, когда доступен стек отладки CMake для команды
target_sources(),add_executable(),add_library(),add_custom_target()или другой команды, добавившей этот исходный файл в целевой объект. Значение — целое без знака, индекс с нуля в массивеbacktraceGraphчленаnodes.
-
-
sourceGroups -
Необязательный член, присутствующий, когда исходные файлы сгруппированы командой
source_group()или по умолчанию. Значение — массив JSON, содержащий записи, соответствующие группам. Каждая запись — это объект JSON с членами:-
name -
Строка, определяющая имя группы исходных файлов.
-
sourceIndexes -
Массив JSON, перечисляющий исходные файлы, принадлежащие группе. Каждая запись — целое без знака, индекс с нуля в главном массиве
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.
-
-
frameworks -
Необязательный член, присутствующий, когда на платформах Apple существуют фреймворки. Значение — массив JSON с элементом для каждого каталога. Каждый элемент — объект JSON с членами:
-
path -
Строка, определяющая путь к каталогу фреймворка, представленный с использованием слешей.
-
isSystem -
Необязательный член, присутствующий с логическим значением
true, если фреймворк помечен как системный. -
backtrace -
Необязательный член, присутствующий, когда доступен обратный след языка CMake до команды
target_link_libraries()или других вызовов команд, которые добавили этот фреймворк. Значение — целое беззнаковое число, 0-основанный индекс в массивеbacktraceGraphчленаnodes.
Этот член был добавлен в версии codemodel 2.6.
-
-
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 -
Необязательный член, присутствующий, когда узел представляет строку в файле. Значение — целое положительное число, номер строки.
-
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, элементы которого — строки JSON, именующие один из видов событий
cmake-configure-log(7)с версиями. Будет указана не более одна версия каждого вида события конфигурации. Несмотря на то, что протокол конфигурации может содержать и другие (версионные) виды событий, клиенты должны игнорировать те, которые не перечислены в этом поле.
Тип объекта "cache"
Объект типа cache перечисляет записи кэша. Это переменные, хранящиеся в постоянном кэше (CMakeCache.txt) для дерева сборки.
Существует только одна основная версия объекта cache, версия 2. Версии 1 не существует, чтобы избежать путаницы с версией из режима cmake-server(7).
Версия "cache" 2
Объект cache версии 2 представляет собой JSON-объект:
{
"kind": "cache",
"version": { "major": 2, "minor": 0 },
"entries": [
{
"name": "BUILD_SHARED_LIBS",
"value": "ON",
"type": "BOOL",
"properties": [
{
"name": "HELPSTRING",
"value": "Build shared libraries"
}
]
},
{
"name": "CMAKE_GENERATOR",
"value": "Unix Makefiles",
"type": "INTERNAL",
"properties": [
{
"name": "HELPSTRING",
"value": "Name of generator."
}
]
}
]
}
Члены, специфичные для объектов cache:
-
entries -
JSON-массив, записи которого представляют собой JSON-объекты, описывающие запись кэша. Члены каждой записи:
-
name -
Строка, задающая имя записи.
-
value -
Строка, задающая значение записи.
-
type -
Строка, задающая тип записи, используемый
cmake-gui(1)для выбора виджета для редактирования. -
properties -
JSON-массив записей, задающих свойства свойств записей кэша. Каждая запись — это JSON-объект, содержащий члены:
-
name -
Строка, задающая имя свойства записи кэша.
-
value -
Строка, задающая значение свойства записи кэша.
-
-
Тип объекта "cmakeFiles"
Объект типа cmakeFiles перечисляет файлы, используемые CMake при конфигурировании и генерации системы сборки. Включает файлы CMakeLists.txt, а также включенные файлы .cmake.
Существует только одна основная версия объекта cmakeFiles, версия 1.
"cmakeFiles" версия 1
Объект cmakeFiles версии 1 представляет собой JSON-объект:
{
"kind": "cmakeFiles",
"version": { "major": 1, "minor": 1 },
"paths": {
"build": "/path/to/top-level-build-dir",
"source": "/path/to/top-level-source-dir"
},
"inputs": [
{
"path": "CMakeLists.txt"
},
{
"isGenerated": true,
"path": "/path/to/top-level-build-dir/.../CMakeSystem.cmake"
},
{
"isExternal": true,
"path": "/path/to/external/third-party/module.cmake"
},
{
"isCMake": true,
"isExternal": true,
"path": "/path/to/cmake/Modules/CMakeGenericSystem.cmake"
}
],
"globsDependent": [
{
"expression": "src/*.cxx",
"recurse": true,
"files": [
"src/foo.cxx",
"src/bar.cxx"
]
}
]
}
Члены, специфичные для объектов cmakeFiles:
-
paths -
JSON-объект, содержащий члены:
-
source -
Строка, задающая абсолютный путь к корневому каталогу исходных кодов, представленный с использованием слешей.
-
build -
Строка, задающая абсолютный путь к корневому каталогу сборки, представленный с использованием слешей.
-
-
inputs -
JSON-массив, записи которого представляют собой JSON-объекты, описывающие входной файл, используемый CMake при конфигурировании и генерации системы сборки. Члены каждой записи:
-
path -
Строка, задающая путь к входному файлу для CMake, представленный с использованием слешей. Если файл находится внутри корневого каталога исходных кодов, путь задается относительно этого каталога. В противном случае путь является абсолютным.
-
isGenerated -
Необязательный член, присутствующий со значением булевого типа
true, если путь указывает на файл, который находится в корневом каталоге сборки, а сборка выполняется вне исходного кода. Этот член недоступен для сборок в исходном коде. -
isExternal -
Необязательный член, присутствующий со значением булевого типа
true, если путь указывает на файл, который не находится в корневых каталогах исходных кодов или сборки. -
isCMake -
Необязательный член, присутствующий со значением булевого типа
true, если путь указывает на файл в установке CMake.
-
-
globsDependent -
Необязательный член, который присутствует, когда проект вызывает
file(GLOB)илиfile(GLOB_RECURSE)с параметромCONFIGURE_DEPENDS. Значение представляет собой JSON-массив JSON-объектов, каждый из которых задает выражение поиска и список совпавших путей. Если выражение поиска больше не соответствует тому же списку путей, CMake считает систему сборки устаревшей.Этот поле был добавлен в
cmakeFilesверсию 1.1.Члены каждой записи:
-
expression -
Строка, задающая выражение поиска.
-
recurse -
Необязательный член, присутствующий со значением булевого типа
true, если запись соответствует вызовуfile(GLOB_RECURSE). В противном случае запись соответствует вызовуfile(GLOB). -
listDirectories -
Необязательный член, присутствующий со значением булевого типа
true, еслиfile(GLOB)был вызван безLIST_DIRECTORIES falseилиfile(GLOB_RECURSE)был вызван сLIST_DIRECTORIES true. -
followSymlinks -
Необязательный член, присутствующий со значением булевого типа
true, еслиfile(GLOB)был вызван с параметромFOLLOW_SYMLINKS. -
relative -
Необязательный член, присутствующий, если
file(GLOB)был вызван с параметромRELATIVE <path>. Значение — это строка, содержащая переданное значение<path>. -
paths -
JSON-массив строк, задающий пути, соответствующие вызову
file(GLOB)илиfile(GLOB_RECURSE).
-
Тип объекта "toolchains"
Объект типа toolchains перечисляет свойства используемых сборочных инструментов. Включают язык, путь к компилятору, идентификатор и версию.
Существует только одна основная версия объекта toolchains, версия 1.
"toolchains" версия 1
Объект toolchains версии 1 представляет собой JSON-объект:
{
"kind": "toolchains",
"version": { "major": 1, "minor": 0 },
"toolchains": [
{
"language": "C",
"compiler": {
"path": "/usr/bin/cc",
"id": "GNU",
"version": "9.3.0",
"implicit": {
"includeDirectories": [
"/usr/lib/gcc/x86_64-linux-gnu/9/include",
"/usr/local/include",
"/usr/include/x86_64-linux-gnu",
"/usr/include"
],
"linkDirectories": [
"/usr/lib/gcc/x86_64-linux-gnu/9",
"/usr/lib/x86_64-linux-gnu",
"/usr/lib",
"/lib/x86_64-linux-gnu",
"/lib"
],
"linkFrameworkDirectories": [],
"linkLibraries": [ "gcc", "gcc_s", "c", "gcc", "gcc_s" ]
}
},
"sourceFileExtensions": [ "c", "m" ]
},
{
"language": "CXX",
"compiler": {
"path": "/usr/bin/c++",
"id": "GNU",
"version": "9.3.0",
"implicit": {
"includeDirectories": [
"/usr/include/c++/9",
"/usr/include/x86_64-linux-gnu/c++/9",
"/usr/include/c++/9/backward",
"/usr/lib/gcc/x86_64-linux-gnu/9/include",
"/usr/local/include",
"/usr/include/x86_64-linux-gnu",
"/usr/include"
],
"linkDirectories": [
"/usr/lib/gcc/x86_64-linux-gnu/9",
"/usr/lib/x86_64-linux-gnu",
"/usr/lib",
"/lib/x86_64-linux-gnu",
"/lib"
],
"linkFrameworkDirectories": [],
"linkLibraries": [
"stdc++", "m", "gcc_s", "gcc", "c", "gcc_s", "gcc"
]
}
},
"sourceFileExtensions": [
"C", "M", "c++", "cc", "cpp", "cxx", "mm", "CPP"
]
}
]
}
Члены, специфичные для объектов toolchains:
-
toolchains -
Массив JSON, элементы которого представляют собой объекты JSON, определяющие цепочку инструментов, связанную с конкретным языком. Члены каждого элемента:
-
language -
Строка JSON, определяющая язык цепочки инструментов, например, C или CXX. Названия языков совпадают с именами языков, которые можно передать команде
project(). Поскольку CMake поддерживает только одну цепочку инструментов на язык, это поле может использоваться в качестве ключа. -
compiler -
Объект JSON, содержащий члены:
-
path -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILERопределена для текущего языка. Его значение — строка JSON, содержащая путь к компилятору. -
id -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILER_IDопределена для текущего языка. Его значение — строка JSON, содержащая идентификатор (GNU, MSVC и т. д.) компилятора. -
version -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILER_VERSIONопределена для текущего языка. Его значение — строка JSON, содержащая версию компилятора. -
target -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_COMPILER_TARGETопределена для текущего языка. Его значение — строка JSON, содержащая целевой кросс-компиляции компилятора. -
implicit -
Объект JSON, содержащий члены:
-
includeDirectories -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIESопределена для текущего языка. Его значение — массив JSON из строк JSON, где каждая строка содержит путь к неявному каталогу заголовочных файлов для компилятора. -
linkDirectories -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIESопределена для текущего языка. Его значение — массив JSON из строк JSON, где каждая строка содержит путь к неявному каталогу линковки для компилятора. -
linkFrameworkDirectories -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIESопределена для текущего языка. Его значение — массив JSON из строк JSON, где каждая строка содержит путь к неявному каталогу линковки фреймворков для компилятора. -
linkLibraries -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIESопределена для текущего языка. Его значение — массив JSON из строк JSON, где каждая строка содержит путь к неявному библиотеке линковки для компилятора.
-
-
-
sourceFileExtensions -
Необязательный член, присутствующий, когда переменная
CMAKE_<LANG>_SOURCE_FILE_EXTENSIONSопределена для текущего языка. Его значение — массив JSON из строк JSON, где каждая строка содержит расширение файла (без ведущей точки) для языка.
-
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/manual/cmake-file-api.7.html