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 识别的所有请求版本。
客户端可以通过在客户端特定的查询子目录中创建空文件来创建拥有的请求。形式为
<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 运行以生成构建系统时,都会在 v1/reply/
目录中写入一个 index-*.json
文件。客户端必须首先读取回复索引文件,并且只能通过遵循引用来读取其他 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
reply
一个 JSON 对象,镜像 CMake 加载以生成回复的
query/
目录的内容。成员的形式为<kind>-v<major>
对于 CMake 识别为对象种类
<kind>
和主版本<major>
的请求的每个 v1 共享无状态查询文件,都会出现这种形式的成员。该值是对该对象种类和版本的相应回复文件的 v1 回复文件引用。<unknown>
对于 CMake 未识别的每个 v1 共享无状态查询文件,都会出现这种形式的成员。该值是一个 JSON 对象,其中包含一个
error
成员,其中包含指示查询文件未知的错误消息的字符串。client-<client>
对于每个持有 v1 客户端无状态查询文件 的客户端拥有的目录,都会出现这种形式的成员。该值是一个 JSON 对象,镜像
query/client-<client>/
目录的内容。成员的形式为<kind>-v<major>
<kind>-v<major>
<unknown>
对于 CMake 识别为对象种类
<kind>
和主版本<major>
的请求的每个 v1 客户端无状态查询文件,都会出现这种形式的成员。该值是对该对象种类和版本的相应回复文件的 v1 回复文件引用。<unknown>
对于 CMake 未识别的每个 v1 客户端无状态查询文件,都会出现这种形式的成员。该值是一个 JSON 对象,其中包含一个
error
成员,其中包含指示查询文件未知的错误消息的字符串。client
query.json
requests
使用 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
成员,其中包含错误消息的字符串,或
kind
一个字符串,指定对象种类之一。
version
一个 JSON 对象,具有成员 major
和 minor
,指定对象种类整数版本组件。
jsonFile
{
"kind": "<kind>",
"version": { "major": 1, "minor": 0 },
"...": {}
}
一个 JSON 字符串,指定相对于回复索引文件的路径,指向包含对象的另一个 JSON 文件。
v1 回复文件¶
包含特定对象种类的回复文件由 CMake 写入。这些文件的名称未指定,客户端不得解释。客户端必须首先读取 v1 回复索引文件,并遵循对所需响应对象名称的引用。
回复文件(包括索引文件)永远不会被同名但内容不同的文件替换。这允许客户端与可能生成新回复的正在运行的 CMake 并发读取文件。但是,在生成新的回复后,CMake 将尝试删除先前运行中它没有刚刚写入的回复文件。如果客户端尝试读取索引引用的回复文件,但发现文件丢失,则意味着并发的 CMake 已生成新的回复。客户端可以简单地重新开始,读取新的回复索引文件。
对象种类¶
CMake 基于文件的 API 使用以下 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>"
}
]
}
]
}
kind
成员是一个字符串,指定对象种类名称。version
成员是一个 JSON 对象,具有 major
和 minor
成员,指定对象种类的整数版本组件。其他顶层成员特定于每个对象种类。
paths
-
codemodel
对象种类描述了 CMake 建模的构建系统结构。只有一个
codemodel
对象主版本,版本 2。版本 1 不存在,以避免与来自cmake-server(7)
模式的版本混淆。"codemodel" 版本 2¶
codemodel
对象版本 2 是一个 JSON 对象
特定于
codemodel
对象的成员包括一个 JSON 对象,包含成员
name
source
一个字符串,指定顶层源目录的绝对路径,用正斜杠表示。
build
codemodel
对象种类描述了 CMake 建模的构建系统结构。一个字符串,指定顶层构建目录的绝对路径,用正斜杠表示。
"codemodel" 版本 2¶
configurations
一个 JSON 数组,其中包含与可用构建配置对应的条目。在单配置生成器上,
CMAKE_BUILD_TYPE
变量的值有一个条目。对于多配置生成器,CMAKE_CONFIGURATION_TYPES
变量中列出的每个配置都有一个条目。每个条目都是一个 JSON 对象,包含成员name
一个字符串,指定配置的名称,例如
Debug
。directories
一个 JSON 数组,其中每个条目对应于一个构建系统目录,该目录的源目录包含
CMakeLists.txt
文件。第一个条目对应于顶层目录。每个条目都是一个 JSON 对象,包含成员源文件
一个字符串,指定源目录的路径,用正斜杠表示。如果目录位于顶层源目录内,则路径相对于该目录指定(顶层源目录本身为
.
)。否则,路径是绝对路径。构建文件
一个字符串,指定构建目录的路径,用正斜杠表示。如果目录位于顶层构建目录内,则路径相对于该目录指定(顶层构建目录本身为
.
)。否则,路径是绝对路径。parentIndex
string
可选成员,当目录不是顶层目录时出现。该值是主
directories
数组中另一个条目的无符号整数从 0 开始的索引,该条目对应于将此目录添加为子目录的父目录。<major>.<minor>[.<patch>[.<tweak>]][<suffix>]
childIndexes
可选成员,当目录具有子目录时出现。该值是对应于
add_subdirectory()
或subdirs()
命令创建的子目录的条目的 JSON 数组。每个条目都是主directories
数组中另一个条目的无符号整数从 0 开始的索引。projectIndex
v1 回复文件引用¶
主
projects
数组的无符号整数从 0 开始的索引,指示此目录所属的构建系统项目。targetIndexes
可选成员,当目录本身具有目标时出现,不包括属于子目录的目标。该值是对应于目标的条目的 JSON 数组。每个条目都是主
targets
数组中另一个条目的无符号整数从 0 开始的索引。minimumCMakeVersion
可选成员,当目录的 CMake 最低要求版本已知时出现。这是在目录本身或其祖先目录中对
cmake_minimum_required(VERSION)
命令的最本地调用给定的<min>
版本。该值是一个 JSON 对象,带有一个成员name
string
一个 JSON 数组,其中包含与可用构建配置对应的条目。在单配置生成器上,
CMAKE_BUILD_TYPE
变量的值有一个条目。对于多配置生成器,CMAKE_CONFIGURATION_TYPES
变量中列出的每个配置都有一个条目。每个条目都是一个 JSON 对象,包含成员一个字符串,以以下格式指定最低要求版本
一个字符串,指定配置的名称,例如
Debug
。<主版本>[.<次版本>[.<补丁版本>[.<微调版本>]]]]<后缀>
每个组件都是一个无符号整数,后缀可以是任意字符串。
hasInstallRule
一个字符串,指定源目录的路径,用正斜杠表示。如果目录位于顶层源目录内,则路径相对于该目录指定(顶层源目录本身为
.
)。否则,路径是绝对路径。可选成员,当目录或其子目录之一包含任何
install()
规则时,以布尔值true
形式出现,即make install
或等效规则是否可用。
jsonFile
一个 JSON 字符串,指定相对于 codemodel 文件的路径,指向包含 "codemodel" 版本 2 "directory" 对象 的另一个 JSON 文件。
name
此字段在 codemodel 版本 2.3 中添加。
projects
一个 JSON 数组,其中包含与顶层项目和构建系统中定义的子项目对应的条目。每个(子)项目对应于一个源目录,该目录的
CMakeLists.txt
文件调用project()
命令,其项目名称与其父目录不同。第一个条目对应于顶层项目。每个条目都是一个 JSON 对象,包含成员
name
一个 JSON 数组,其中每个条目对应于一个构建系统目录,该目录的源目录包含
CMakeLists.txt
文件。第一个条目对应于顶层目录。每个条目都是一个 JSON 对象,包含成员一个字符串,指定赋予
project()
命令的名称。v1 回复文件引用¶
parentIndex
可选成员,当项目不是顶层项目时出现。该值是主 projects
数组中另一个条目的无符号整数从 0 开始的索引,该条目对应于将此项目添加为子项目的父项目。
childIndexes
paths
-
codemodel
对象种类描述了 CMake 建模的构建系统结构。一个字符串,指定顶层构建目录的绝对路径,用正斜杠表示。
"codemodel" 版本 2¶
configurations
可选成员,当项目具有子项目时出现。该值是对应于子项目的条目的 JSON 数组。每个条目都是主
projects
数组中另一个条目的无符号整数从 0 开始的索引。directoryIndexes
一个 JSON 数组,其中包含与属于该项目的构建系统目录对应的条目。第一个条目对应于项目的顶层目录。每个条目都是主
directories
数组中另一个条目的无符号整数从 0 开始的索引。一个字符串,用于指定由相应的
install()
命令调用选择的组件。destination
可选成员,对于下面特定的
type
值存在。该值是一个字符串,用于指定安装目标路径。该路径可以是绝对路径,也可以是相对于安装前缀的相对路径。paths
可选成员,对于下面特定的
type
值存在。该值是一个 JSON 数组,包含对应于要安装的路径(文件或目录)的条目。每个条目是以下之一一个字符串,用于指定要从中安装文件或目录的路径。路径中不以
/
开头的部分也指定了文件或目录在目标位置下的安装路径(名称)。一个包含以下成员的 JSON 对象
from
一个字符串,用于指定要从中安装文件或目录的路径。
to
一个字符串,用于指定文件或目录在目标位置下的安装路径。
在这两种情况下,路径都用正斜杠表示。如果 "from" 路径位于相应
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)
调用或一个带有RUNTIME_DEPENDENCIES
的install(TARGETS)
调用。destination
成员会被填充。此类型有额外的成员runtimeDependencySetName
和runtimeDependencySetType
。fileSet
一个带有
FILE_SET
的install(TARGETS)
调用。destination
和paths
成员会被填充。isOptional
成员可能存在。此类型有额外的成员fileSetName
、fileSetType
、fileSetDirectories
和fileSetTarget
。此类型在 codemodel 版本 2.4 中添加。
isExcludeFromAll
可选成员,当
install()
被调用时,以布尔值true
存在,并且带有EXCLUDE_FROM_ALL
选项。isForAllComponents
可选成员,当
install(SCRIPT|CODE)
被调用时,以布尔值true
存在,并且带有ALL_COMPONENTS
选项。isOptional
可选成员,当
install()
被调用时,以布尔值true
存在,并且带有OPTIONAL
选项。当type
是file
、directory
或target
时允许使用此选项。targetId
可选成员,当
type
是target
时存在。该值是一个字符串,唯一标识要安装的目标。这与主 "codemodel" 对象的targets
数组中目标的id
成员匹配。targetIndex
可选成员,当
type
是target
时存在。该值是一个无符号整数,基于 0 的索引,指向主 "codemodel" 对象的targets
数组中要安装的目标。targetIsImportLibrary
可选成员,当
type
是target
并且安装程序用于 Windows DLL 导入库文件或 AIX 链接器导入文件时存在。如果存在,则其布尔值为true
。targetInstallNamelink
可选成员,当
type
是target
并且安装程序对应于可能使用符号链接来实现VERSION
和SOVERSION
目标属性的目标时存在。该值是一个字符串,指示安装程序应如何处理符号链接:skip
表示安装程序应跳过符号链接,仅安装真实文件,only
表示安装程序应仅安装符号链接,而不安装真实文件。在所有情况下,paths
成员列出了实际安装的内容。exportName
可选成员,当
type
是export
时存在。该值是一个字符串,用于指定导出的名称。exportTargets
可选成员,当
type
是export
时存在。该值是一个 JSON 数组,包含对应于导出中包含的目标的条目。每个条目都是一个 JSON 对象,包含以下成员projects
一个字符串,唯一标识目标。这与主 "codemodel" 对象的
targets
数组中目标的id
成员匹配。索引
一个无符号整数,基于 0 的索引,指向主 "codemodel" 对象的
targets
数组中目标。
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 对象,包含以下成员projects
一个字符串,唯一标识目标。这与主 "codemodel" 对象的
targets
数组中目标的id
成员匹配。索引
一个无符号整数,基于 0 的索引,指向主 "codemodel" 对象的
targets
数组中目标。
此字段在 codemodel 版本 2.4 中添加。
scriptFile
可选成员,当
type
是script
时存在。该值是一个字符串,用于指定磁盘上脚本文件的路径,用正斜杠表示。如果文件位于顶层源目录内,则路径是相对于该目录指定的。否则,该路径是绝对路径。backtrace
可选成员,当 CMake 语言回溯到添加此安装程序的
install()
或其他命令调用可用时存在。该值是一个无符号整数,基于 0 的索引,指向backtraceGraph
成员的nodes
数组。
backtraceGraph
一个 "codemodel" 版本 2 "回溯图",其节点从本 "directory" 对象中其他位置的
backtrace
成员引用。
"codemodel" 版本 2 "target" 对象¶
codemodel "target" 对象由 "codemodel" 版本 2 对象的 targets
数组引用。每个 "target" 对象都是一个 JSON 对象,包含以下成员
name
一个字符串,用于指定目标的逻辑名称。
projects
一个字符串,唯一标识目标。格式未指定,客户端不应解释。
type
一个字符串,用于指定目标的类型。该值是
EXECUTABLE
、STATIC_LIBRARY
、SHARED_LIBRARY
、MODULE_LIBRARY
、OBJECT_LIBRARY
、INTERFACE_LIBRARY
或UTILITY
之一。backtrace
可选成员,当 CMake 语言回溯到源代码中创建目标的命令可用时存在。该值是一个无符号整数,基于 0 的索引,指向
backtraceGraph
成员的nodes
数组。folder
可选成员,当设置了
FOLDER
目标属性时存在。该值是一个 JSON 对象,包含一个成员name
一个字符串,用于指定目标文件夹的名称。
paths
-
codemodel
对象种类描述了 CMake 建模的构建系统结构。一个字符串,用于指定目标源目录的路径,用正斜杠表示。如果目录位于顶层源目录内,则路径是相对于该目录指定的(顶层源目录本身用
.
表示)。否则,该路径是绝对路径。"codemodel" 版本 2¶
一个字符串,用于指定目标构建目录的路径,用正斜杠表示。如果目录位于顶层构建目录内,则路径是相对于该目录指定的(顶层构建目录本身用
.
表示)。否则,该路径是绝对路径。
nameOnDisk
可选成员,对于链接或归档到单个主要工件中的可执行文件和库目标存在。该值是一个字符串,用于指定该工件在磁盘上的文件名。
artifacts
可选成员,对于在磁盘上生成工件以供依赖项使用的可执行文件和库目标存在。该值是一个 JSON 数组,包含对应于工件的条目。每个条目都是一个 JSON 对象,包含一个成员
path
一个字符串,用于指定磁盘上文件的路径,用正斜杠表示。如果文件位于顶层构建目录内,则路径是相对于该目录指定的。否则,该路径是绝对路径。
isGeneratorProvided
可选成员,如果目标由 CMake 的构建系统生成器而不是源代码中的命令提供,则以布尔值
true
存在。install
可选成员,当目标具有
install()
规则时存在。该值是一个 JSON 对象,包含以下成员prefix
一个 JSON 对象,用于指定安装前缀。它有一个成员
path
一个字符串,用于指定
CMAKE_INSTALL_PREFIX
的值。
destinations
一个 JSON 数组,包含用于指定安装目标路径的条目。每个条目都是一个 JSON 对象,包含以下成员
path
一个字符串,用于指定安装目标路径。该路径可以是绝对路径,也可以是相对于安装前缀的相对路径。
backtrace
可选成员,当 CMake 语言回溯到指定此目标的
install()
命令调用可用时存在。该值是一个无符号整数,基于 0 的索引,指向backtraceGraph
成员的nodes
数组。
launchers
可选成员,对于至少有一个项目指定的启动器的可执行目标存在。该值是一个 JSON 数组,包含对应于指定启动器的条目。每个条目都是一个 JSON 对象,包含以下成员
command
一个字符串,用于指定磁盘上启动器的路径,用正斜杠表示。如果文件位于顶层源目录内,则路径是相对于该目录指定的。
arguments
可选成员,当启动器命令具有位于要启动的可执行文件之前的参数时存在。该值是一个字符串数组,表示参数。
type
一个字符串,用于指定启动器的类型。该值是以下之一
emulator
交叉编译时目标平台的模拟器。请参阅
CROSSCOMPILING_EMULATOR
目标属性。test
用于执行测试的启动程序。请参阅
TEST_LAUNCHER
目标属性。
此字段在 codemodel 版本 2.7 中添加。
link
可选成员,对于链接到运行时二进制文件的可执行文件和共享库目标存在。该值是一个 JSON 对象,包含描述链接步骤的成员
language
一个字符串,用于指定用于调用链接器的工具链的语言(例如,
C
、CXX
、Fortran
)。commandFragments
可选成员,当链接命令行调用的片段可用时存在。该值是一个 JSON 数组,包含指定有序片段的条目。每个条目都是一个 JSON 对象,包含以下成员
fragment
一个字符串,用于指定链接命令行调用的片段。该值以构建系统的本机 shell 格式编码。
role
一个字符串,用于指定片段内容的角色
flags
:链接标志。libraries
:链接库文件路径或标志。libraryPath
:库搜索路径标志。frameworkPath
:macOS 框架搜索路径标志。
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 生成器场景中存在。
此字段在 codemodel 版本 2.8 中添加。
dependencies
可选成员,当目标依赖于其他目标时存在。该值是一个 JSON 数组,包含对应于依赖项的条目。每个条目都是一个 JSON 对象,包含以下成员
projects
一个字符串,唯一标识此目标所依赖的目标。这与另一个目标的主
id
成员匹配。backtrace
可选成员,当 CMake 语言回溯到创建此依赖项的
add_dependencies()
、target_link_libraries()
或其他命令调用可用时存在。该值是一个无符号整数,基于 0 的索引,指向backtraceGraph
成员的nodes
数组。
fileSets
一个 JSON 数组,包含对应于目标文件集的条目。每个条目都是一个 JSON 对象,包含以下成员
name
一个字符串,用于指定文件集的名称。
type
一个字符串,用于指定文件集的类型。请参阅
target_sources()
支持的文件集类型。visibility
一个字符串,用于指定文件集的可見性;
PUBLIC
、PRIVATE
或INTERFACE
之一。baseDirectories
一个字符串数组,每个字符串指定一个包含文件集中源文件的基本目录。如果目录位于顶层源目录内,则路径是相对于该目录指定的。否则,该路径是绝对路径。
此字段在 codemodel 版本 2.5 中添加。
sources
一个 JSON 数组,包含对应于目标源文件的条目。每个条目都是一个 JSON 对象,包含以下成员
path
一个字符串,用于指定磁盘上源文件的路径,用正斜杠表示。如果文件位于顶层源目录内,则路径是相对于该目录指定的。否则,该路径是绝对路径。
compileGroupIndex
可选成员,当源文件被编译时存在。该值是一个无符号整数,基于 0 的索引,指向
compileGroups
数组。sourceGroupIndex
可选成员,当源文件通过
source_group()
命令或默认方式成为源组的一部分时存在。该值是一个无符号整数,基于 0 的索引,指向sourceGroups
数组。isGenerated
可选成员,如果源文件是
GENERATED
,则以布尔值true
存在。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 数组,每个条目都是一个无符号整数,表示在backtraceGraph
成员的nodes
数组中的从 0 开始的索引。标准 (standard)
表示语言标准的字符串。
此字段在代码模型版本 2.2 中添加。
编译命令片段 (compileCommandFragments)
可选成员,当编译器的命令行调用的片段可用时出现。该值是一个 JSON 数组,其中包含指定有序片段的条目。每个条目都是一个包含一个成员的 JSON 对象
fragment
一个字符串,指定编译命令行调用的片段。该值以构建系统的本机 shell 格式编码。
包含目录 (includes)
可选成员,当存在包含目录时出现。该值是一个 JSON 数组,每个目录都有一个条目。每个条目都是一个包含以下成员的 JSON 对象
path
一个字符串,指定包含目录的路径,用正斜杠表示。
是系统目录 (isSystem)
可选成员,当包含目录被标记为系统包含目录时出现,布尔值为
true
。backtrace
可选成员,当 CMake 语言回溯到
target_include_directories()
或添加此包含目录的其他命令调用可用时出现。该值是一个无符号整数,表示在backtraceGraph
成员的nodes
数组中的从 0 开始的索引。
框架 (frameworks)
可选成员,当在 Apple 平台上,存在框架时出现。该值是一个 JSON 数组,每个目录都有一个条目。每个条目都是一个包含以下成员的 JSON 对象
path
一个字符串,指定框架目录的路径,用正斜杠表示。
是系统目录 (isSystem)
可选成员,当框架被标记为系统框架时出现,布尔值为
true
。backtrace
可选成员,当 CMake 语言回溯到
target_link_libraries()
或添加此框架的其他命令调用可用时出现。该值是一个无符号整数,表示在backtraceGraph
成员的nodes
数组中的从 0 开始的索引。
此字段在代码模型版本 2.6 中添加。
预编译头文件 (precompileHeaders)
可选成员,当
target_precompile_headers()
或其他命令调用在目标上设置PRECOMPILE_HEADERS
时出现。该值是一个 JSON 数组,每个头文件都有一个条目。每个条目都是一个包含以下成员的 JSON 对象头文件 (header)
预编译头文件的完整路径。
backtrace
可选成员,当 CMake 语言回溯到
target_precompile_headers()
或添加此预编译头文件的其他命令调用可用时出现。该值是一个无符号整数,表示在backtraceGraph
成员的nodes
数组中的从 0 开始的索引。
此字段在代码模型版本 2.1 中添加。
宏定义 (defines)
可选成员,当存在预处理器定义时出现。该值是一个 JSON 数组,每个定义都有一个条目。每个条目都是一个包含以下成员的 JSON 对象
定义 (define)
一个字符串,以
<name>[=<value>]
格式指定预处理器定义,例如DEF
或DEF=1
。backtrace
可选成员,当 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 开始的索引。行号 (line)
一个可选成员,当节点表示文件中的一行时出现。该值是一个无符号整数,表示从 1 开始的行号。
command
一个可选成员,当节点表示文件中的命令调用时出现。该值是一个无符号整数,表示回溯
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 对象,指定一个缓存条目。每个条目的成员包括
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
-
codemodel
对象种类描述了 CMake 建模的构建系统结构。只有一个
codemodel
对象主版本,版本 2。版本 1 不存在,以避免与来自cmake-server(7)
模式的版本混淆。"codemodel" 版本 2¶
codemodel
对象版本 2 是一个 JSON 对象
输入 (inputs)
一个 JSON 数组,其条目都是 JSON 对象,指定 CMake 在配置和生成构建系统时使用的输入文件。每个条目的成员包括
path
一个字符串,指定 CMake 输入文件的路径,用正斜杠表示。如果文件位于顶层源目录中,则路径是相对于该目录指定的。否则,路径是绝对路径。
isGenerated
可选成员,当路径指定顶层构建目录下的文件,并且构建是外部构建时,布尔值为
true
。此成员在内部构建中不可用。是外部文件 (isExternal)
可选成员,当路径指定的文件不在顶层源目录或构建目录下时,布尔值为
true
。是 CMake 文件 (isCMake)
可选成员,当路径指定 CMake 安装中的文件时,布尔值为
true
。
依赖于 Glob 表达式 (globsDependent)
可选成员,当项目调用
file(GLOB)
或file(GLOB_RECURSE)
并使用CONFIGURE_DEPENDS
选项时出现。该值是一个 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)
-
path
可选成员,当为当前语言定义了
CMAKE_<LANG>_COMPILER
变量时出现。它的值是一个 JSON 字符串,其中包含编译器的路径。projects
可选成员,当为当前语言定义了
CMAKE_<LANG>_COMPILER_ID
变量时出现。它的值是一个 JSON 字符串,其中包含编译器的 ID(GNU、MSVC 等)。version
可选成员,当为当前语言定义了
CMAKE_<LANG>_COMPILER_VERSION
变量时出现。它的值是一个 JSON 字符串,其中包含编译器的版本。target
可选成员,当为当前语言定义了
CMAKE_<LANG>_COMPILER_TARGET
变量时出现。它的值是一个 JSON 字符串,其中包含编译器的交叉编译目标。隐式 (implicit)
-
包含目录 (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 字符串数组,其中每个字符串都包含该语言的文件扩展名(不带前导点)。