|
1 # Corrosion |
|
2 [![Build Status](https://github.com/corrosion-rs/corrosion/actions/workflows/test.yaml/badge.svg)](https://github.com/corrosion-rs/corrosion/actions?query=branch%3Amaster) |
|
3 [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://corrosion-rs.github.io/corrosion/) |
|
4 ![License](https://img.shields.io/badge/license-MIT-blue) |
|
5 |
|
6 Corrosion, formerly known as cmake-cargo, is a tool for integrating Rust into an existing CMake |
|
7 project. Corrosion can automatically import executables, static libraries, and dynamic libraries |
|
8 from a workspace or package manifest (`Cargo.toml` file). |
|
9 |
|
10 ## Features |
|
11 - Automatic Import of Executable, Static, and Shared Libraries from Rust Crate |
|
12 - Easy Installation of Rust Executables |
|
13 - Trivially Link Rust Executables to C/C++ Libraries in Tree |
|
14 - Multi-Config Generator Support |
|
15 - Simple Cross-Compilation |
|
16 |
|
17 ## Sample Usage with FetchContent |
|
18 |
|
19 Using the CMake `FetchContent` module allows you to easily integrate corrosion into your build. |
|
20 Other methods including installing corrosion or adding it as a subdirectory are covered in the |
|
21 [setup chapter](https://corrosion-rs.github.io/corrosion/setup_corrosion.html) of the |
|
22 corrosion [documentation](https://corrosion-rs.github.io/corrosion/). |
|
23 |
|
24 ```cmake |
|
25 include(FetchContent) |
|
26 |
|
27 FetchContent_Declare( |
|
28 Corrosion |
|
29 GIT_REPOSITORY https://github.com/corrosion-rs/corrosion.git |
|
30 GIT_TAG v0.5 # Optionally specify a commit hash, version tag or branch here |
|
31 ) |
|
32 FetchContent_MakeAvailable(Corrosion) |
|
33 |
|
34 # Import targets defined in a package or workspace manifest `Cargo.toml` file |
|
35 corrosion_import_crate(MANIFEST_PATH rust-lib/Cargo.toml) |
|
36 |
|
37 add_executable(your_cpp_bin main.cpp) |
|
38 target_link_libraries(your_cpp_bin PUBLIC rust-lib) |
|
39 ``` |
|
40 |