#cargo #wrap #cargo-wrap

build cargo_wrap

A small rust wrapper that allows the usage of cargo as a library

6 releases

Uses new Rust 2024

0.1.5 Apr 8, 2025
0.1.4 Apr 8, 2025
0.1.2 Mar 26, 2025

#250 in Build Utils

Download history 205/week @ 2025-03-17 163/week @ 2025-03-24 21/week @ 2025-03-31 318/week @ 2025-04-07 17/week @ 2025-04-14

539 downloads per month

MIT license

15KB
137 lines

Cargo-Wrap

Crates.io Version

This crate is basically just Rust bindings for cargo. For now supports the following flags and features:

Features

  • Verbose logging (--verbose)
  • Release or Debug build modes (--release)
  • Custom job counts (--jobs N)
  • Custom target output directories (CARGO_TARGET_DIR)
  • Specify build targets (--target X)
  • Feature listing and activation (--features X, --no-default-features)
  • Binary/Library build selection (--bin X, --lib X)
  • Extra rustc flags (RUSTFLAGS)

Installation

cargo add cargo_wrap
cargo_wrap = "0.1.5"

Examples

Basic Build

use cargo_wrap::{Builder, ProjectSettings};
use std::io;

fn main() -> io::Result<()> {
    let mut settings = ProjectSettings::new("/path/to/project", None, None, false);
    settings.set_release();

    let builder = Builder::new(settings, 0, Some("output.log"))?;
    builder.build()?;

    Ok(())
}

Enable Features

use cargo_wrap::{Builder, ProjectSettings};
use std::io;

fn main() -> io::Result<()> {
    let mut settings = ProjectSettings::new("/path/to/project", None, None, false);
    settings.add_feature("my_feature".to_string());

    let builder = Builder::new(settings, 0, None)?;
    builder.build()?;

    Ok(())
}

Changelog

0.1.0

  • Initial commit

0.1.1

  • Added additional rustc flag support

0.1.2

  • Added #[derive(Clone)] support for the ProjectSettings struct

0.1.3

  • Added support for manually setting build targets
  • Added support for manually setting the output path

0.1.4

  • Added support for manually setting the project path

0.1.5

  • Fixed feature bug

License

MIT

Dependencies

~255–490KB
~11K SLoC