4 个版本
新版本 0.1.2 | 2024 年 8 月 14 日 |
---|---|
0.1.1 | 2024 年 8 月 8 日 |
0.1.0 | 2024 年 8 月 8 日 |
0.0.9 | 2024 年 8 月 8 日 |
#340 在 文件系统
每月 382 次下载
100KB
2K SLoC
cmake-file-api-rs
用于与 cmake-file-api 交互的库
- 编写查询
- 读取回复
双许可 MIT 或 UNLICENSE。
用法
运行 cargo add cmake-file-api
将 crate 添加到您的项目中。
示例
构建查询并解析 cmake-file-api
use cmake_file_api::{objects, query, reply};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let source_dir = std::path::Path::new("path/to/source/dir");
let build_dir = std::path::Path::new("path/to/build/dir");
// write query for codemodel-v2
query::Writer::default()
.request_object::<objects::CodeModelV2>()
.write_stateless(build_dir)?;
// run cmake
assert!(std::process::Command::new("cmake")
.arg("-S")
.arg(source_dir)
.arg("-B")
.arg(build_dir)
.status()?
.success());
// parse cmake-file-api
let reader = reply::Reader::from_build_dir(build_dir)?;
// read and print codemodel-v2
let codemodel: objects::CodeModelV2 = reader.read_object()?;
codemodel.configurations.iter().for_each(|config| {
config.targets.iter().for_each(|target| {
println!("{}", target.name);
println!("{:#?}", target.sources);
});
});
Ok(())
}
CMake-file-api
cmake-file-api
是 cmaker-server
的前身,在 CMake
3.14 中引入。它提供了一个丰富的接口,用于查询配置和项目信息。API 是分版本的,当前版本是 v1。正如其名所示,该 API 基于文件,由 CMake
写入磁盘,并由客户端工具读取。 CMake
在构建目录的 .cmake/api/v1
目录中生成这些文件。V1 API 是一组描述 CMake
项目配置的 JSON 文件集合,它始终包含一个 index-*.json
文件,该文件列出了所有可用的对象。对象也各自分版本,例如 codemodel-v2.json
。 CMake
将按需生成文件,并期望客户端首先在配置之前在 .cmake/api/v1/query
内写入查询。查询描述了客户端感兴趣的对象。使用状态查询,客户端还可以提供额外的客户端数据,该数据在回复中可用。
该 API 通常在 IDE 中使用,但也可用于其他工具用途,例如调用需要编译标志的工具。
相关项目
- python-cmake-file-api: CMake 文件 API 的 Python 绑定
- cfi-java: CMake 文件 API 的 Java 绑定
依赖关系
~0.8–1.7MB
~36K SLoC