cargo-c-0.3.1 is not a library.
Visit the last successful build:
cargo-c-0.9.31+cargo-0.78.0
Cargo C-ABI helpers
cargo applet to build and install C-ABI compatibile dynamic and static libraries.
It produces and installs a correct pkg-config file, a static library and a dynamic library, and a C header to be used by any C (and C-compatible) software.
Usage
# build the library, create the .h header, create the .pc file
# build the library, create the .h header, create the .pc file and install all of it
For a more in-depth explanation of how cargo-c
works and how to use it for
your crates, read Building Crates so they Look Like C ABI Libraries.
The TL;DR:
- Create a
capi.rs
with the C-API you want to expose and use#[cfg(cargo_c)]
to hide it when you build a normal rust library. - Make sure you have a lib target and if you are using a workspace the first member is the crate you want to export, that means that you might have to add a "." member at the start of the list.
- Since Rust 1.38, also add "staticlib" to the "lib"
crate-type
. - Remember to add a [
cbindgen.toml
][cbinden-toml] and fill it with at least the include guard and probably you want to set the language to C (it defaults to C++) - Once you are happy with the result update your documentation to tell the user
to install
cargo-c
and docargo cinstall --prefix=/usr --destdir=/tmp/some-place
or something along those lines.
Users
Status
- cli
- build command
- install command
- cargo applet support
- build targets
- pkg-config generation
- header generation (cbindgen integration)
-
staticlib
support -
cdylib
support - Generate version information in the header
- Make it tunable
- Extra Cargo.toml keys
- Better status reporting