14 releases
0.1.18 | Feb 13, 2025 |
---|---|
0.1.16 | Jul 5, 2021 |
0.1.12 | Jun 11, 2021 |
0.1.8 | May 28, 2021 |
0.1.0 | Jan 28, 2018 |
#462 in Development tools
119 downloads per month
Used in 8 crates
(6 directly)
7KB
Ligen
Ligen (Language Interface Generator - IPA: /ˈliɡən/) is an extensible multi-language binding generator
Features
- Zero-effort binding generation
- Supports multiple programming languages
Getting started
lib.rs
:
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:
Dependencies
~9.5MB
~183K SLoC