cmake_file_api

在 3.27 版本中新增。

允许与 CMake 文件 API 进行交互。

cmake_file_api(QUERY ...)

QUERY 子命令为当前的 CMake 调用添加一个文件 API 查询。

cmake_file_api(
  QUERY
  API_VERSION <version>
  [CODEMODEL <versions>...]
  [CACHE <versions>...]
  [CMAKEFILES <versions>...]
  [TOOLCHAINS <versions>...]
)

必须始终提供 API_VERSION。目前,对 <version> 支持的唯一值是 1。有关回复内容和位置的详细信息,请参阅 API v1

可选关键字 CODEMODELCACHECMAKEFILESTOOLCHAINS 各自对应于项目可以请求的对象类型。configureLog 对象类型不能用此命令设置,因为它必须在 CMake 开始读取顶层 CMakeLists.txt 文件之前设置。

对于每个可选关键字,<versions> 列表必须包含一个或多个形式为 majormajor.minor 的版本值,其中 majorminor 是整数。项目应按首选顺序列出其接受的版本,因为列表中只有一个支持的第一个值将被选中。该命令将忽略 major 版本高于其支持的该对象类型任何 major 版本的值。如果遇到无效的版本号,或未支持任何请求的版本,它将引发错误。

对于请求的每种对象类型,都会在内部添加一个等同于共享、无状态查询的查询。文件系统中不会创建任何查询文件。回复 *将在* 生成时写入文件系统。

从查询文件或多次调用 cmake_file_api(QUERY) 中多次添加同一内容的查询不是错误。最终的查询集将是磁盘上指定的所有查询与项目提交的查询的合并组合。

示例

项目可能希望在构建时使用文件 API 的回复来实现某种形式的验证任务。项目可以使用 cmake_file_api(QUERY) 来请求当前运行所需的信息,而不是依赖 CMake 外部的某些东西来创建查询文件。然后,它可以创建一个自定义命令在构建时运行,并知道所需的信息应该始终可用。

cmake_file_api(
  QUERY
  API_VERSION 1
  CODEMODEL 2.3
  TOOLCHAINS 1
)

add_custom_target(verify_project
  COMMAND ${CMAKE_COMMAND}
    -D BUILD_DIR=${CMAKE_BINARY_DIR}
    -D CONFIG=$<CONFIG>
    -P ${CMAKE_CURRENT_SOURCE_DIR}/verify_project.cmake
)