https://github.com/jfrimmel/cargo-size
a custom command extending 'cargo' to print the memory usage
https://github.com/jfrimmel/cargo-size
cargo cargo-plugin cargo-subcommand rust size-calculation
Last synced: 8 months ago
JSON representation
a custom command extending 'cargo' to print the memory usage
- Host: GitHub
- URL: https://github.com/jfrimmel/cargo-size
- Owner: jfrimmel
- License: mit
- Created: 2019-01-05T20:21:03.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-01-06T11:11:57.000Z (over 7 years ago)
- Last Synced: 2025-01-29T23:23:11.078Z (over 1 year ago)
- Topics: cargo, cargo-plugin, cargo-subcommand, rust, size-calculation
- Language: Rust
- Homepage:
- Size: 14.6 KB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# cargo-size
> a custom command extending `cargo` to print the memory usage
# Dependencies
- `cargo` is required for building the crate you want to display the size of.
# Usage
Executing `cargo size` in a crate (root or a subdirectory) with a file `memory.x` present in the crate root builds the development binary and prints an output similar to:
```
$ cargo size
Finished dev [unoptimized + debuginfo] target(s) in 0.37s
Printing Memory Usage
------------
Program: 55652 bytes (42.5% full)
Data: 8 bytes (0.0% full)
```
The command `cargo size --release` does the same, but builds the release binary if necessary and prints its size.
If the file `memory.x` is not found or is invalid the percentages are omitted, without any error or warning message:
```
$ cargo size
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Printing Memory Usage
------------
Program: 1486351 bytes
Data: 4656 bytes
```
The file `memory.x` has to contain a `MEMORY` directive with at least the two sections `flash` and `ram` (case is ignored). The size of those two memories is used to calculate the percentages.
If the binary (either the development or the release one, as specified) is not up-to-date, cargo is used to build it.
# Errors
If any error is detected, the application emits an error message and exits with the exit code `1` to indicate failure.
Possible errors include:
- The program was started in a directory, which is not a cargo project (subdirectories of such a project are perfectly fine).
- The manifest file `Cargo.toml` is present, but could not be parsed, e.g. the crate name is missing.
- The build command failed, e.g. the code contains an error.
- The binary was built successfully, but could not be found in the target directory. This is most likely if you are cross-compiling code for another platform. Then the binary is located in a subdirectory named as the target. The application tries some known platform, but if yours is not known yet, the command will fail.
- The binary has an invalid format, e.g. it is not an ELF-file or it is corrupt.