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.