Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/corrosion-rs/corrosion
Marrying Rust and CMake - Easy Rust and C/C++ Integration!
https://github.com/corrosion-rs/corrosion
build-system build-systems build-tool c cargo cmake cmake-cargo cplusplus cpp cross-compilation rust
Last synced: 3 days ago
JSON representation
Marrying Rust and CMake - Easy Rust and C/C++ Integration!
- Host: GitHub
- URL: https://github.com/corrosion-rs/corrosion
- Owner: corrosion-rs
- License: mit
- Created: 2018-03-07T20:30:02.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2025-01-01T14:25:32.000Z (10 days ago)
- Last Synced: 2025-01-02T05:06:47.534Z (10 days ago)
- Topics: build-system, build-systems, build-tool, c, cargo, cmake, cmake-cargo, cplusplus, cpp, cross-compilation, rust
- Language: CMake
- Homepage: https://corrosion-rs.github.io/corrosion/
- Size: 864 KB
- Stars: 1,121
- Watchers: 14
- Forks: 109
- Open Issues: 56
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- stars - corrosion-rs/corrosion - Easy Rust and C/C++ Integration! (HarmonyOS / Windows Manager)
README
# Corrosion
[![Build Status](https://github.com/corrosion-rs/corrosion/actions/workflows/test.yaml/badge.svg)](https://github.com/corrosion-rs/corrosion/actions?query=branch%3Amaster)
[![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://corrosion-rs.github.io/corrosion/)
![License](https://img.shields.io/badge/license-MIT-blue)Corrosion, formerly known as cmake-cargo, is a tool for integrating Rust into an existing CMake
project. Corrosion can automatically import executables, static libraries, and dynamic libraries
from a workspace or package manifest (`Cargo.toml` file).## Features
- Automatic Import of Executable, Static, and Shared Libraries from Rust Crate
- Easy Installation of Rust Executables
- Trivially Link Rust Executables to C/C++ Libraries in Tree
- Multi-Config Generator Support
- Simple Cross-Compilation## Sample Usage with FetchContent
Using the CMake `FetchContent` module allows you to easily integrate corrosion into your build.
Other methods including installing corrosion or adding it as a subdirectory are covered in the
[setup chapter](https://corrosion-rs.github.io/corrosion/setup_corrosion.html) of the
corrosion [documentation](https://corrosion-rs.github.io/corrosion/).```cmake
include(FetchContent)FetchContent_Declare(
Corrosion
GIT_REPOSITORY https://github.com/corrosion-rs/corrosion.git
GIT_TAG v0.5 # Optionally specify a commit hash, version tag or branch here
)
FetchContent_MakeAvailable(Corrosion)# Import targets defined in a package or workspace manifest `Cargo.toml` file
corrosion_import_crate(MANIFEST_PATH rust-lib/Cargo.toml)add_executable(your_cpp_bin main.cpp)
target_link_libraries(your_cpp_bin PUBLIC rust-lib)
```## Requirements
### Stable v0.5 Release
- CMake 3.15 or newer. Some features may only be available on more recent CMake versions
- Rust 1.46 or newer. Some platforms / features may require more recent Rust versions### Development (master branch)
- CMake 3.22 or newer