Crates.io | compile_commands |
lib.rs | compile_commands |
version | 0.3.0 |
source | src |
created_at | 2024-07-10 05:03:01.257442 |
updated_at | 2024-09-04 01:05:45.57321 |
description | Work with compile_commands.json and compile_flags.txt in Rust programs. |
homepage | https://github.com/WillLillis/compile_commands |
repository | https://github.com/WillLillis/compile_commands |
max_upload_size | |
id | 1297843 |
size | 28,914 |
Provide a thin wrapper type around the compile_commands.json and compile_flags.txt standards as provided by the LLVM project.
Given the following compile_commands.json
file:
[
{ "directory": "/home/user/llvm/build",
"arguments": ["/usr/bin/clang++", "-Irelative", "-DSOMEDEF=With spaces, quotes and \\-es.", "-c", "-o", "file.o", "file.cc"],
"file": "file.cc" },
{ "directory": "/home/user/llvm/build",
"command": "/usr/bin/clang++ -Irelative -DSOMEDEF=\"With spaces, quotes and \\-es.\" -c -o file.o file.cc",
"file": "file2.cc" }
]
Or the following compile_flags.txt
file:
-xc++
-I
libwidget/include/
Parse it and use as a type-safe object in your Rust project:
use std::path::PathBuf;
use compile_commands::CompilationDatabase;
fn main() {
// Create a `CompilationDatabase` object directly from a compile_commands.json file
let comp_cmds = include_str!("compile_commands.json");
let comp_data = serde_json::from_str::<CompilationDatabase>(&comp_cmds).unwrap();
_ = comp_data;
// Or create a `CompilationDatabase` object from a compile_flags.txt file
let comp_flags = include_str!("compile_flags.txt");
let comp_data =
compile_commands::from_compile_flags_txt(&PathBuf::from("~/foo/build"), &comp_flags);
_ = comp_data;
}
Used to provide inline error diagnostics and additional per-project include directories