tools/corrosion/README.md
branchtransitional_engine
changeset 16021 6a3dc15b78b9
equal deleted inserted replaced
16009:7544a7d7c819 16021:6a3dc15b78b9
       
     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