Expand description
§Ligen
Ligen (Language Interface Generator) is an extensible macro-based multi-language binding generator.
We officially support ligen-c, a binding generator for the Programming Language C.
§Requirements
cargo install cargo-ligen
§How to use
Here is an library on how to use the C generator and the CMake library generator in your crate:
Cargo.toml
[dev-dependencies]
ligen = "0.1"
ligen-c = "0.1"
ligen-cmake = "0.1"Now you can use it in your build.rs file as following:
ⓘ
use ligen::prelude::*;
use ligen_c::Generator as CGenerator;
use ligen_cmake::Generator as CMakeGenerator;
fn main() {
if let Ok(library) = Library::read() {
let c_generator = CGenerator::default();
let cmake_generator = CMakeGenerator::default();
cmake_generator.generate(&library).expect("Couldn't generate CMake library.");
c_generator.generate(&library).expect("Couldn't generate C bindings");
}
}Then to generate the language bindings run: cargo ligen
cargo ligen passes all its extra parameters to cargo build, so you can use cargo ligen --release to
generate a library with optimized production code (--debug is default).
§Getting started
Here are a few links to get started:
Re-exports§
pub use ligen_ir as ir;pub use ligen_utils as utils;pub use ligen_traits as traits;pub use ligen_parser as parser;pub use ligen_common as common;pub use ligen_generator as generator;
Modules§
- prelude
- Prelude module with error handling types and others types.