cmake-file-api(7)¶
简介¶
CMake 提供一个基于文件的 API,客户端可以使用它来获取 CMake 生成的构建系统的语义信息。客户端可以通过向构建树中的特定位置写入查询文件来请求零个或多个对象类型。当 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 在运行以生成构建系统时写入的回复文件。客户端只能在回复索引引用时读取回复文件
index-*.json
CMake 生成构建系统时写入的 v1 回复索引文件。
error-*.json
在 4.1 版本中新增。
CMake 由于错误而未能生成构建系统时写入的 v1 回复错误索引。
客户端可以随时查找并读取回复索引。客户端可以选择随时创建
reply/
目录并监视其是否出现新的回复索引。CMake 拥有所有回复文件。客户端绝不能删除它们。
版本 3.31 新增:用户可以将查询文件添加到 CMAKE_CONFIG_DIR
内的 api/v1/query
中,为所有 CMake 项目创建用户范围的查询。
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 对象,包含以下成员
种类
指定要包含在回复中的对象类型之一。
版本
指示客户端理解的对象类型的版本。版本具有遵循语义版本约定的主要和次要组件。值必须是
指定(非负)主要版本号的 JSON 整数,或
包含
major
和(可选)minor
成员的 JSON 对象,指定非负整数版本组件,或一个 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 实例的信息。它包含成员
版本
一个 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
一个布尔值,指定生成器是否支持多个输出配置。
名称
一个字符串,指定生成器的名称。
platform
如果生成器支持
CMAKE_GENERATOR_PLATFORM
,则这是一个字符串,指定生成器平台名称。
objects
reply
一个 JSON 对象,镜像 CMake 加载以生成回复的
query/
目录的内容。成员的形式为<kind>-v<major>
对于 CMake 识别为对象类型
<kind>
且主要版本为<major>
的每个 v1 共享无状态查询文件,都会出现此形式的成员。其值为<unknown>
对于 CMake 未识别的每个 v1 共享无状态查询文件,都会出现此形式的成员。其值是一个 JSON 对象,其中包含一个
error
成员,其中包含一个字符串,指示查询文件未知。client-<client>
对于每个包含 v1 客户端无状态查询文件的客户端拥有目录,都会出现此形式的成员。其值是一个 JSON 对象,镜像
query/client-<client>/
目录的内容。成员的形式为<kind>-v<major>
对于 CMake 识别为对象类型
<kind>
且主要版本为<major>
的每个 v1 客户端无状态查询文件,都会出现此形式的成员。其值为<unknown>
对于 CMake 未识别的每个 v1 客户端无状态查询文件,都会出现此形式的成员。其值是一个 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
数组中每个条目的响应,顺序相同。每个响应是对应于所请求对象类型和所选版本的回复文件的 v1 回复文件引用,或
一个 JSON 对象,其中包含一个
error
成员,其中包含错误消息字符串。
读取回复索引文件后,客户端可以读取它引用的其他 v1 回复文件。
v1 回复文件引用¶
回复索引文件使用一个 JSON 对象表示对另一个回复文件的每个引用,该 JSON 对象包含以下成员
种类
一个字符串,指定对象类型之一。
版本
一个 JSON 对象,包含
major
和minor
成员,指定对象类型的整数版本组件。jsonFile
一个 JSON 字符串,指定相对于回复索引文件到包含对象的另一个 JSON 文件的路径。
v1 回复错误索引¶
在 4.1 版本中新增。
CMake 在未能生成构建系统时,会将 error-*.json
文件写入 v1/reply/
目录。此回复错误索引遵循与 v1 回复索引文件相同的命名模式、语法和语义,但以下情况除外
index-
前缀被error-
前缀替换。当生成新的错误索引时,旧的索引文件不会被删除。如果存在 v1 回复索引文件,它会索引最近成功运行的回复。如果存在多个
index-*.json
和/或error-*.json
文件,则按字典顺序,排除index-
或error-
前缀,名称最大的文件是当前索引。仅提供了对象类型的一个子集
- configureLog
在 4.1 版本中新增。
其他对象类型的索引条目包含
error
消息而不是 v1 回复文件引用。
v1 回复文件¶
包含特定对象类型的回复文件由 CMake 写入。这些文件的名称未指定,客户端不得解释。客户端必须首先读取v1 回复索引文件,并遵循对所需响应对象名称的引用。
回复文件(包括索引文件)绝不会被同名但内容不同的文件替换。这允许客户端在运行中的 CMake 可能生成新回复的同时读取文件。然而,在生成新回复后,CMake 将尝试删除它未写入的先前运行的回复文件。如果客户端尝试读取索引引用的回复文件但发现文件缺失,则表示并发的 CMake 已生成新回复。客户端可以简单地通过读取新的回复索引文件重新开始。
对象类型¶
CMake 基于文件的 API 使用以下 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": 8 },
"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 对象,包含成员
源
一个字符串,指定顶层源目录的绝对路径,以正斜杠表示。
构建
一个字符串,指定顶层构建目录的绝对路径,以正斜杠表示。
configurations
一个 JSON 数组,其条目对应于可用的构建配置。在单配置生成器上,有一个条目用于
CMAKE_BUILD_TYPE
变量的值。对于多配置生成器,CMAKE_CONFIGURATION_TYPES
变量中列出的每个配置都有一个条目。每个条目都是一个 JSON 对象,包含成员名称
一个字符串,指定配置的名称,例如
Debug
。directories
一个 JSON 数组,每个条目对应于其源目录包含
CMakeLists.txt
文件的构建系统目录。第一个条目对应于顶层目录。每个条目都是一个 JSON 对象,包含成员源
一个字符串,指定源目录的路径,以正斜杠表示。如果目录在顶层源目录内,则路径相对于该目录指定(对于顶层源目录本身,为
.
)。否则路径是绝对路径。构建
一个字符串,指定构建目录的路径,以正斜杠表示。如果目录在顶层构建目录内,则路径相对于该目录指定(对于顶层构建目录本身,为
.
)。否则路径是绝对路径。parentIndex
可选成员,当目录不是顶层目录时存在。该值是主
directories
数组中另一个条目的无符号整数 0 基索引,该条目对应于添加此目录作为子目录的父目录。childIndexes
可选成员,当目录有子目录时存在。该值是一个 JSON 数组,其中包含由
add_subdirectory()
或subdirs()
命令创建的子目录条目。每个条目都是主directories
数组中另一个条目的无符号整数 0 基索引。projectIndex
主
projects
数组的无符号整数 0 基索引,指示此目录所属的构建系统项目。targetIndexes
可选成员,当目录本身具有目标(不包括属于子目录的目标)时存在。该值是一个 JSON 数组,其中包含对应于目标的条目。每个条目是主
targets
数组的无符号整数 0 基索引。minimumCMakeVersion
当目录已知 CMake 的最低所需版本时存在的可选成员。这是在目录本身或其父目录中,最本地的
cmake_minimum_required(VERSION)
命令中给出的<min>
版本。该值是一个 JSON 对象,包含一个成员string
一个字符串,指定格式为
<major>.<minor>[.<patch>[.<tweak>]][<suffix>]
每个组件都是一个无符号整数,后缀可以是任意字符串。
hasInstallRule
可选成员,当目录或其子目录包含任何
install()
规则时,其布尔值为true
,即是否有make install
或等效规则可用。jsonFile
一个 JSON 字符串,指定相对于 codemodel 文件到包含 "codemodel" 版本 2 "directory" 对象的另一个 JSON 文件的路径。
此字段在 codemodel 版本 2.3 中添加。
projects
一个 JSON 数组,其条目对应于构建系统中定义的顶层项目和子项目。每个(子)项目对应一个源目录,其
CMakeLists.txt
文件调用project()
命令时项目名称与其父目录不同。第一个条目对应于顶层项目。每个条目都是一个 JSON 对象,包含成员
名称
一个字符串,指定赋予
project()
命令的名称。parentIndex
可选成员,当项目不是顶层项目时存在。该值是主
projects
数组中另一个条目的无符号整数 0 基索引,该条目对应于添加此项目作为子项目的父项目。childIndexes
可选成员,当项目有子项目时存在。该值是一个 JSON 数组,其中包含对应于子项目的条目。每个条目是主
projects
数组中另一个条目的无符号整数 0 基索引。directoryIndexes
一个 JSON 数组,其条目对应于作为项目一部分的构建系统目录。第一个条目对应于项目的顶层目录。每个条目是主
directories
数组的无符号整数 0 基索引。targetIndexes
可选成员,当项目本身具有目标(不包括属于子项目的目标)时存在。该值是一个 JSON 数组,其中包含对应于目标的条目。每个条目是主
targets
数组的无符号整数 0 基索引。
targets
一个 JSON 数组,其中包含对应于构建系统目标的条目。此类目标由调用
add_executable()
、add_library()
和add_custom_target()
创建,不包括导入的目标和接口库(它们不生成任何构建规则)。每个条目都是一个 JSON 对象,包含成员名称
一个字符串,指定目标名称。
id
一个字符串,唯一标识目标。这与
jsonFile
引用的文件中的id
字段匹配。directoryIndex
主
directories
数组的无符号整数 0 基索引,指示定义目标的构建系统目录。projectIndex
主
projects
数组的无符号整数 0 基索引,指示定义目标的构建系统项目。jsonFile
一个 JSON 字符串,指定相对于 codemodel 文件到包含 "codemodel" 版本 2 "target" 对象的另一个 JSON 文件的路径。
"codemodel" 版本 2 "directory" 对象¶
一个 codemodel "directory" 对象由 "codemodel" 版本 2 对象的 directories
数组引用。每个 "directory" 对象都是一个 JSON 对象,包含成员
paths
一个 JSON 对象,包含成员
源
一个字符串,指定源目录的路径,以正斜杠表示。如果目录在顶层源目录内,则路径相对于该目录指定(对于顶层源目录本身,为
.
)。否则路径是绝对路径。构建
一个字符串,指定构建目录的路径,以正斜杠表示。如果目录在顶层构建目录内,则路径相对于该目录指定(对于顶层构建目录本身,为
.
)。否则路径是绝对路径。
installers
一个 JSON 数组,其条目对应于
install()
规则。每个条目都是一个 JSON 对象,包含成员component
一个字符串,指定由相应的
install()
命令调用选择的组件。destination
可选成员,存在于某些
type
值下方。该值是一个字符串,指定安装目标路径。路径可以是绝对路径或相对于安装前缀的相对路径。paths
可选成员,存在于某些
type
值下方。该值是一个 JSON 数组,其条目对应于要安装的路径(文件或目录)。每个条目都是以下之一一个字符串,指定要安装的文件或目录的来源路径。路径中不带
/
的部分也指定了文件或目录要安装到目标路径下的路径(名称)。一个 JSON 对象,包含成员
from
一个字符串,指定要安装的文件或目录的来源路径。
到
一个字符串,指定文件或目录要安装到目标路径下的路径。
在这两种情况下,路径都以正斜杠表示。如果“来源”路径位于对应
type
值文档的顶层目录内,则路径相对于该目录指定。否则路径是绝对路径。type
一个字符串,指定安装规则的类型。该值是以下之一,其中一些变体提供额外的成员
file
一个
install(FILES)
或install(PROGRAMS)
调用。destination
和paths
成员已填充,其中顶层源目录下的路径相对于该目录表示。isOptional
成员可能存在。此类型没有额外的成员。directory
一个
install(DIRECTORY)
调用。destination
和paths
成员已填充,其中顶层源目录下的路径相对于该目录表示。isOptional
成员可能存在。此类型没有额外的成员。目标
一个
install(TARGETS)
调用。destination
和paths
成员已填充,其中顶层构建目录下的路径相对于该目录表示。isOptional
成员可能存在。此类型具有额外的成员targetId
、targetIndex
、targetIsImportLibrary
和targetInstallNamelink
。export
一个
install(EXPORT)
调用。destination
和paths
成员已填充,其中顶层构建目录下的路径相对于该目录表示。paths
条目引用 CMake 自动生成的用于安装的文件,它们的实际值被视为私有实现细节。此类型具有额外的成员exportName
和exportTargets
。script
一个
install(SCRIPT)
调用。此类型具有额外的成员scriptFile
。code
一个
install(CODE)
调用。此类型没有额外的成员。importedRuntimeArtifacts
一个
install(IMPORTED_RUNTIME_ARTIFACTS)
调用。destination
成员已填充。isOptional
成员可能存在。此类型没有额外的成员。runtimeDependencySet
一个
install(RUNTIME_DEPENDENCY_SET)
调用或带有RUNTIME_DEPENDENCIES
的install(TARGETS)
调用。destination
成员已填充。此类型具有额外的成员runtimeDependencySetName
和runtimeDependencySetType
。fileSet
一个
install(TARGETS)
调用,带有FILE_SET
。destination
和paths
成员已填充。isOptional
成员可能存在。此类型具有额外的成员fileSetName
、fileSetType
、fileSetDirectories
和fileSetTarget
。此类型在 codemodel 版本 2.4 中添加。
cxxModuleBmi
一个
install(TARGETS)
调用,带有CXX_MODULES_BMI
。destination
成员已填充,isOptional
成员可能存在。此类型具有额外的cxxModuleBmiTarget
成员。此类型在 codemodel 版本 2.5 中添加。
isExcludeFromAll
可选成员,当
install()
调用时带有EXCLUDE_FROM_ALL
选项时,其布尔值为true
。isForAllComponents
可选成员,当
install(SCRIPT|CODE)
调用时带有ALL_COMPONENTS
选项时,其布尔值为true
。isOptional
可选成员,当
install()
调用时带有OPTIONAL
选项时,其布尔值为true
。这在type
为file
、directory
或target
时允许。targetId
可选成员,当
type
为target
时存在。该值是一个字符串,唯一标识要安装的目标。这与主 "codemodel" 对象的targets
数组中目标的id
成员匹配。targetIndex
可选成员,当
type
为target
时存在。该值是主 "codemodel" 对象的targets
数组中要安装的目标的无符号整数 0 基索引。targetIsImportLibrary
可选成员,当
type
为target
且安装程序用于 Windows DLL 导入库文件或 AIX 链接器导入文件时存在。如果存在,其布尔值为true
。targetInstallNamelink
可选成员,当
type
为target
且安装程序对应于可能使用符号链接来实现VERSION
和SOVERSION
目标属性的目标时存在。该值是一个字符串,指示安装程序应如何处理符号链接:skip
表示安装程序应跳过符号链接并仅安装实际文件,only
表示安装程序应仅安装符号链接而不安装实际文件。在所有情况下,paths
成员列出实际安装的内容。exportName
可选成员,当
type
为export
时存在。该值是一个字符串,指定导出的名称。exportTargets
可选成员,当
type
为export
时存在。该值是一个 JSON 数组,其中包含对应于导出中包含的目标的条目。每个条目都是一个 JSON 对象,包含成员id
一个字符串,唯一标识目标。这与主 "codemodel" 对象的
targets
数组中目标的id
成员匹配。索引
主 "codemodel" 对象的
targets
数组中目标的无符号整数 0 基索引。
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>
的 genex 评估确定)。此字段在 codemodel 版本 2.4 中添加。
fileSetTarget
可选成员,当
type
为fileSet
时存在。该值是一个 JSON 对象,包含成员id
一个字符串,唯一标识目标。这与主 "codemodel" 对象的
targets
数组中目标的id
成员匹配。索引
主 "codemodel" 对象的
targets
数组中目标的无符号整数 0 基索引。
此字段在 codemodel 版本 2.4 中添加。
cxxModuleBmiTarget
可选成员,当
type
为cxxModuleBmi
时存在。该值是一个 JSON 对象,包含成员id
一个字符串,唯一标识目标。这与主 "codemodel" 对象的
targets
数组中目标的id
成员匹配。索引
主 "codemodel" 对象的
targets
数组中目标的无符号整数 0 基索引。
此字段在 codemodel 版本 2.5 中添加。
scriptFile
可选成员,当
type
为script
时存在。该值是一个字符串,指定脚本文件在磁盘上的路径,以正斜杠表示。如果文件在顶层源目录内,则路径相对于该目录指定。否则路径是绝对路径。回溯
可选成员,当存在指向添加此安装程序的
install()
或其他命令调用的 CMake 语言回溯时存在。该值是backtraceGraph
成员的nodes
数组的无符号整数 0 基索引。
backtraceGraph
一个 "codemodel" 版本 2 "回溯图",其节点在此 "directory" 对象中其他地方的
backtrace
成员中引用。
"codemodel" 版本 2 "target" 对象¶
一个 codemodel "target" 对象由 "codemodel" 版本 2 对象的 targets
数组引用。每个 "target" 对象都是一个 JSON 对象,包含成员
名称
一个字符串,指定目标的逻辑名称。
id
一个字符串,唯一标识目标。格式未指定,不应由客户端解释。
type
一个字符串,指定目标的类型。值为
EXECUTABLE
、STATIC_LIBRARY
、SHARED_LIBRARY
、MODULE_LIBRARY
、OBJECT_LIBRARY
、INTERFACE_LIBRARY
或UTILITY
之一。回溯
可选成员,当存在指向创建目标的源代码中命令的 CMake 语言回溯时存在。该值是
backtraceGraph
成员的nodes
数组的无符号整数 0 基索引。folder
可选成员,当
FOLDER
目标属性设置时存在。该值是一个 JSON 对象,包含一个成员名称
一个字符串,指定目标文件夹的名称。
paths
一个 JSON 对象,包含成员
源
一个字符串,指定目标源目录的路径,以正斜杠表示。如果目录在顶层源目录内,则路径相对于该目录指定(对于顶层源目录本身,为
.
)。否则路径是绝对路径。构建
一个字符串,指定目标构建目录的路径,以正斜杠表示。如果目录在顶层构建目录内,则路径相对于该目录指定(对于顶层构建目录本身,为
.
)。否则路径是绝对路径。
nameOnDisk
可选成员,存在于链接或归档到单个主要工件的可执行文件和库目标。该值是一个字符串,指定该工件在磁盘上的文件名。
artifacts
可选成员,存在于在磁盘上生成供依赖项使用的工件的可执行文件和库目标。该值是一个 JSON 数组,其中包含对应于工件的条目。每个条目都是一个 JSON 对象,包含一个成员
path
一个字符串,指定文件在磁盘上的路径,以正斜杠表示。如果文件在顶层构建目录内,则路径相对于该目录指定。否则路径是绝对路径。
isGeneratorProvided
可选成员,当目标由 CMake 的构建系统生成器而非源代码中的命令提供时,其布尔值为
true
。安装
可选成员,当目标具有
install()
规则时存在。该值是一个 JSON 对象,包含成员prefix
一个 JSON 对象,指定安装前缀。它包含一个成员
path
一个字符串,指定
CMAKE_INSTALL_PREFIX
的值。
destinations
一个 JSON 数组,其中包含指定安装目标路径的条目。每个条目都是一个 JSON 对象,包含成员
path
一个字符串,指定安装目标路径。路径可以是绝对路径或相对于安装前缀的相对路径。
回溯
可选成员,当存在指向指定此目标的
install()
命令调用的 CMake 语言回溯时存在。该值是backtraceGraph
成员的nodes
数组的无符号整数 0 基索引。
launchers
可选成员,当可执行目标至少有一个项目指定的启动器时存在。该值是一个 JSON 数组,其中包含对应于指定启动器的条目。每个条目都是一个 JSON 对象,包含成员
命令
一个字符串,指定磁盘上启动器的路径,以正斜杠表示。如果文件在顶层源目录内,则路径相对于该目录指定。
arguments
可选成员,当启动器命令具有在要启动的可执行文件之前的参数时存在。该值是表示参数的字符串的 JSON 数组。
type
一个字符串,指定启动器类型。值为以下之一
emulator
交叉编译时用于目标平台的模拟器。请参阅
CROSSCOMPILING_EMULATOR
目标属性。测试
用于执行测试的启动程序。请参阅
TEST_LAUNCHER
目标属性。
此字段在 codemodel 版本 2.7 中添加。
link
可选成员,存在于链接到运行时二进制文件的可执行文件和共享库目标。该值是一个 JSON 对象,其中包含描述链接步骤的成员
language
一个字符串,指定用于调用链接器的工具链的语言(例如
C
、CXX
、Fortran
)。commandFragments
可选成员,当链接命令行调用的片段可用时存在。该值是一个 JSON 数组,其中包含指定有序片段的条目。每个条目都是一个 JSON 对象,包含成员
fragment
一个字符串,指定链接命令行调用的片段。该值以构建系统的本地 shell 格式编码。
role
一个字符串,指定片段内容的角色
flags
:链接标志。libraries
:链接库文件路径或标志。libraryPath
:库搜索路径标志。frameworkPath
:macOS 框架搜索路径标志。
回溯
可选成员,当存在指向添加此链接片段的
target_link_libraries()
、target_link_options()
或其他命令调用的 CMake 语言回溯时存在。该值是backtraceGraph
成员的nodes
数组的无符号整数 0 基索引。
lto
可选成员,当启用链接时优化(也称为过程间优化或链接时代码生成)时,其布尔值为
true
。sysroot
可选成员,当定义了
CMAKE_SYSROOT_LINK
或CMAKE_SYSROOT
变量时存在。该值是一个 JSON 对象,包含一个成员path
一个字符串,指定 sysroot 的绝对路径,以正斜杠表示。
archive
可选成员,存在于静态库目标。该值是一个 JSON 对象,其中包含描述归档步骤的成员
commandFragments
可选成员,当归档器命令行调用的片段可用时存在。该值是一个 JSON 数组,其中包含指定片段的条目。每个条目都是一个 JSON 对象,包含成员
fragment
一个字符串,指定归档器命令行调用的片段。该值以构建系统的本地 shell 格式编码。
role
一个字符串,指定片段内容的角色
flags
:归档器标志。
lto
可选成员,当启用链接时优化(也称为过程间优化或链接时代码生成)时,其布尔值为
true
。
debugger
可选成员,当目标设置了以下字段之一时存在。该值是一个 JSON 对象,其中包含对应于调试器特定设置值的条目。
此字段在 codemodel 版本 2.8 中添加。
workingDirectory
可选成员,当
DEBUGGER_WORKING_DIRECTORY
目标属性设置时存在。当VS_DEBUGGER_WORKING_DIRECTORY
设置时,也会在Visual Studio Generators中存在该成员。此字段在 codemodel 版本 2.8 中添加。
dependencies
可选成员,当目标依赖于其他目标时出现。该值是一个 JSON 数组,包含对应于依赖项的条目。每个条目都是一个 JSON 对象,包含成员:
id
一个字符串,唯一标识此目标所依赖的目标。这与另一个目标的主要
id
成员匹配。回溯
可选成员,当可用于创建此依赖项的 CMake 语言回溯到
add_dependencies()
、target_link_libraries()
或其他命令调用时出现。该值是一个无符号整数,表示backtraceGraph
成员的nodes
数组中基于 0 的索引。
fileSets
可选成员,当目标定义了一个或多个文件集时出现。该值是一个 JSON 数组,包含对应于目标文件集的条目。每个条目都是一个 JSON 对象,包含成员:
名称
一个字符串,指定文件集的名称。
type
一个字符串,指定文件集的类型。参见
target_sources()
支持的文件集类型。visibility
一个字符串,指定文件集的可见性;可以是
PUBLIC
、PRIVATE
或INTERFACE
之一。baseDirectories
一个 JSON 字符串数组,每个字符串指定文件集中包含源文件的基本目录。如果目录位于顶级源目录内,则路径相对于该目录指定。否则,路径是绝对路径。
此字段在 codemodel 版本 2.5 中添加。
sources
一个 JSON 数组,包含对应于目标源文件的条目。每个条目都是一个 JSON 对象,包含成员:
path
一个字符串,指定磁盘上源文件的路径,用正斜杠表示。如果文件位于顶级源目录内,则路径相对于该目录指定。否则,路径是绝对路径。
compileGroupIndex
可选成员,当源文件被编译时出现。该值是一个无符号整数,表示
compileGroups
数组中基于 0 的索引。sourceGroupIndex
可选成员,当源文件通过
source_group()
命令或默认情况下属于源组时出现。该值是一个无符号整数,表示sourceGroups
数组中基于 0 的索引。isGenerated
可选成员,当源文件为
GENERATED
时,其布尔值为true
。fileSetIndex
可选成员,当源文件属于文件集时出现。该值是一个无符号整数,表示
fileSets
数组中基于 0 的索引。此字段在 codemodel 版本 2.5 中添加。
回溯
可选成员,当可用于创建此源文件依赖项的 CMake 语言回溯到
target_sources()
、add_executable()
、add_library()
、add_custom_target()
或其他命令调用时出现。该值是一个无符号整数,表示backtraceGraph
成员的nodes
数组中基于 0 的索引。
sourceGroups
可选成员,当源文件通过
source_group()
命令或默认情况下分组时出现。该值是一个 JSON 数组,包含对应于组的条目。每个条目都是一个 JSON 对象,包含成员:名称
一个字符串,指定源组的名称。
sourceIndexes
一个 JSON 数组,列出属于该组的源文件。每个条目都是一个无符号整数,表示目标主要
sources
数组中基于 0 的索引。
compileGroups
可选成员,当目标有可编译的源文件时出现。该值是一个 JSON 数组,包含对应于以相同设置编译的源文件组的条目。每个条目都是一个 JSON 对象,包含成员:
sourceIndexes
一个 JSON 数组,列出属于该组的源文件。每个条目都是一个无符号整数,表示目标主要
sources
数组中基于 0 的索引。language
一个字符串,指定用于编译源文件的工具链语言(例如
C
、CXX
、Fortran
)。languageStandard
可选成员,当语言标准被显式设置(例如通过
CXX_STANDARD
)或由编译特性隐式设置时出现。每个条目都是一个包含两个成员的 JSON 对象:backtraces
可选成员,当可用于设置
<LANG>_STANDARD
的 CMake 语言回溯可用时出现。如果语言标准由编译特性隐式设置,则使用这些特性作为回溯。多个编译特性可能要求相同的语言标准,因此可能存在多个回溯。该值是一个 JSON 数组,每个条目都是一个无符号整数,表示backtraceGraph
成员的nodes
数组中基于 0 的索引。standard
表示语言标准的字符串。
此字段在 codemodel 版本 2.2 中添加。
compileCommandFragments
可选成员,当编译器命令行调用的片段可用时出现。该值是一个 JSON 数组,包含指定有序片段的条目。每个条目都是一个包含一个成员的 JSON 对象:
fragment
一个字符串,指定编译命令行调用的片段。该值以构建系统的原生 shell 格式编码。
回溯
可选成员,当可用于添加此片段的 CMake 语言回溯可用时出现。该值是一个无符号整数,表示
backtraceGraph
成员的nodes
数组中基于 0 的索引。
includes
可选成员,当存在包含目录时出现。该值是一个 JSON 数组,每个目录都有一个条目。每个条目都是一个包含成员的 JSON 对象:
path
一个字符串,指定包含目录的路径,用正斜杠表示。
isSystem
可选成员,当包含目录被标记为系统包含目录时,其布尔值为
true
。回溯
可选成员,当可用于添加此包含目录的 CMake 语言回溯到
target_include_directories()
或其他命令调用时出现。该值是一个无符号整数,表示backtraceGraph
成员的nodes
数组中基于 0 的索引。
frameworks
可选成员,当在 Apple 平台上存在框架时出现。该值是一个 JSON 数组,每个目录都有一个条目。每个条目都是一个包含成员的 JSON 对象:
path
一个字符串,指定框架目录的路径,用正斜杠表示。
isSystem
可选成员,当框架被标记为系统框架时,其布尔值为
true
。回溯
可选成员,当可用于添加此框架的 CMake 语言回溯到
target_link_libraries()
或其他命令调用时出现。该值是一个无符号整数,表示backtraceGraph
成员的nodes
数组中基于 0 的索引。
此字段在 codemodel 版本 2.6 中添加。
precompileHeaders
可选成员,当
target_precompile_headers()
或其他命令调用在目标上设置PRECOMPILE_HEADERS
时出现。该值是一个 JSON 数组,每个头文件都有一个条目。每个条目都是一个包含成员的 JSON 对象:header
预编译头文件的完整路径。
回溯
可选成员,当可用于添加此预编译头文件的 CMake 语言回溯到
target_precompile_headers()
或其他命令调用时出现。该值是一个无符号整数,表示backtraceGraph
成员的nodes
数组中基于 0 的索引。
此字段在 codemodel 版本 2.1 中添加。
defines
可选成员,当存在预处理器定义时出现。该值是一个 JSON 数组,每个定义都有一个条目。每个条目都是一个包含成员的 JSON 对象:
define
一个字符串,指定格式为
<name>[=<value>]
的预处理器定义,例如DEF
或DEF=1
。回溯
可选成员,当可用于添加此预处理器定义的 CMake 语言回溯到
target_compile_definitions()
或其他命令调用时出现。该值是一个无符号整数,表示backtraceGraph
成员的nodes
数组中基于 0 的索引。
sysroot
可选成员,当定义了
CMAKE_SYSROOT_COMPILE
或CMAKE_SYSROOT
变量时出现。该值是一个包含一个成员的 JSON 对象:path
一个字符串,指定 sysroot 的绝对路径,以正斜杠表示。
backtraceGraph
一个 "codemodel" 版本 2 "回溯图",其节点在“target”对象的其他地方的
backtrace
成员中引用。
"codemodel" 版本 2 "回溯图"¶
"codemodel" 版本 2 "目录" 对象或 "codemodel" 版本 2 "目标" 对象的 backtraceGraph
成员是一个 JSON 对象,描述了一个回溯图。其节点在包含对象的其他地方的 backtrace
成员中引用。回溯图对象成员是:
nodes
一个 JSON 数组,列出回溯图中的节点。每个条目都是一个包含成员的 JSON 对象:
file
一个无符号整数,表示回溯
files
数组中基于 0 的索引。行
一个可选成员,当节点表示文件中的一行时出现。该值是一个无符号整数,表示基于 1 的行号。
命令
一个可选成员,当节点表示文件中的命令调用时出现。该值是一个无符号整数,表示回溯
commands
数组中基于 0 的索引。parent
一个可选成员,当节点不是调用堆栈的底部时出现。该值是一个无符号整数,表示回溯
nodes
数组中另一个条目的基于 0 的索引。
commands
一个 JSON 数组,列出回溯节点引用的命令名称。每个条目都是一个字符串,指定命令名称。
files
一个 JSON 数组,列出回溯节点引用的 CMake 语言文件。每个条目都是一个字符串,指定文件的路径,用正斜杠表示。如果文件位于顶级源目录内,则路径相对于该目录指定。否则,路径是绝对路径。
对象类型 "configureLog"¶
3.26 版新增。
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 对象,指定一个缓存条目。每个条目的成员是:
名称
一个字符串,指定条目的名称。
value
一个字符串,指定条目的值。
type
一个字符串,指定
cmake-gui(1)
用于选择编辑小部件的条目类型。属性
一个 JSON 数组,包含指定关联 缓存条目属性 的条目。每个条目都是一个包含成员的 JSON 对象:
名称
一个字符串,指定缓存条目属性的名称。
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 对象,包含成员
源
一个字符串,指定顶层源目录的绝对路径,以正斜杠表示。
构建
一个字符串,指定顶层构建目录的绝对路径,以正斜杠表示。
inputs
一个 JSON 数组,其条目都是一个 JSON 对象,指定 CMake 在配置和生成构建系统时使用的输入文件。每个条目的成员是:
path
一个字符串,指定 CMake 输入文件的路径,用正斜杠表示。如果文件位于顶级源目录内,则路径相对于该目录指定。否则,路径是绝对路径。
isGenerated
可选成员,当路径指定的文件位于顶级构建目录下且构建是“外部源”时,其布尔值为
true
。此成员在“内部源”构建中不可用。isExternal
可选成员,当路径指定的文件不在顶级源或构建目录下时,其布尔值为
true
。isCMake
可选成员,当路径指定的文件位于 CMake 安装中时,其布尔值为
true
。
globsDependent
可选成员,当项目使用
CONFIGURE_DEPENDS
选项调用file(GLOB)
或file(GLOB_RECURSE)
时出现。该值是一个 JSON 对象数组,每个对象指定一个 glob 表达式及其匹配的路径列表。如果 glob 表达式不再匹配相同的路径列表,CMake 会认为构建系统已过时。此字段在
cmakeFiles
版本 1.1 中添加。每个条目的成员是:
expression
一个字符串,指定 glob 表达式。
recurse
可选成员,当条目对应于
file(GLOB_RECURSE)
调用时,其布尔值为true
。否则,条目对应于file(GLOB)
调用。listDirectories
可选成员,当
file(GLOB)
在没有LIST_DIRECTORIES false
的情况下调用,或者file(GLOB_RECURSE)
在LIST_DIRECTORIES true
的情况下调用时,其布尔值为true
。followSymlinks
可选成员,当
file(GLOB)
使用FOLLOW_SYMLINKS
选项调用时,其布尔值为true
。relative
可选成员,当
file(GLOB)
使用RELATIVE <path>
选项调用时出现。该值是一个字符串,包含给定的<path>
。paths
一个 JSON 字符串数组,指定
file(GLOB)
或file(GLOB_RECURSE)
调用匹配的路径。
对象类型 "toolchains"¶
toolchains
对象类型列出了构建期间使用的工具链属性。这包括语言、编译器路径、ID 和版本。
只有一个 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 字符串,包含编译器的 ID(GNU、MSVC 等)。版本
可选成员,当为当前语言定义了
CMAKE_<LANG>_COMPILER_VERSION
变量时出现。其值是一个 JSON 字符串,包含编译器的版本。目标
可选成员,当为当前语言定义了
CMAKE_<LANG>_COMPILER_TARGET
变量时出现。其值是一个 JSON 字符串,包含编译器的交叉编译目标。implicit
一个 JSON 对象,包含成员
includeDirectories
可选成员,当为当前语言定义了
CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES
变量时出现。其值是一个 JSON 字符串数组,其中每个字符串包含编译器隐式包含目录的路径。linkDirectories
可选成员,当为当前语言定义了
CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES
变量时出现。其值是一个 JSON 字符串数组,其中每个字符串包含编译器隐式链接目录的路径。linkFrameworkDirectories
可选成员,当为当前语言定义了
CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
变量时出现。其值是一个 JSON 字符串数组,其中每个字符串包含编译器隐式链接框架目录的路径。linkLibraries
可选成员,当为当前语言定义了
CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
变量时出现。其值是一个 JSON 字符串数组,其中每个字符串包含编译器隐式链接库的路径。
sourceFileExtensions
可选成员,当为当前语言定义了
CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS
变量时出现。其值是一个 JSON 字符串数组,其中每个字符串包含语言的文件扩展名(不带前导点)。