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 版本高于其支持的任何对象类型的主要版本的版本。如果遇到无效的版本号,或者如果请求的版本都不受支持,则会引发错误。

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

多次添加相同事物的查询不是错误,无论是来自查询文件还是来自对 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
)