16050
|
1 |
# Corrosion
|
|
2 |
[](https://github.com/corrosion-rs/corrosion/actions?query=branch%3Amaster)
|
|
3 |
[](https://corrosion-rs.github.io/corrosion/)
|
|
4 |

|
|
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 |
|