From e1ffc7a35cea6b26b65d1c783bdcafb34d4b577e Mon Sep 17 00:00:00 2001 From: Gtker Date: Mon, 12 Aug 2024 15:39:15 +0200 Subject: [PATCH] Move corrosion_install example into usages.md --- doc/src/quick_start.md | 78 ------------------------------------------ doc/src/usage.md | 78 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 78 deletions(-) diff --git a/doc/src/quick_start.md b/doc/src/quick_start.md index 7a1a88d2..ec1600a6 100644 --- a/doc/src/quick_start.md +++ b/doc/src/quick_start.md @@ -33,83 +33,5 @@ add_executable(your_cool_cpp_bin main.cpp) target_link_libraries(your_cool_cpp_bin PUBLIC rust-lib) ``` -The example below shows how to import a rust library and make it available for install through CMake. - - -```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 -) -# Set any global configuration variables such as `Rust_TOOLCHAIN` before this line! -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 a manually written header file which will be exported -# Requires CMake >=3.23 -target_sources(rust-lib INTERFACE - FILE_SET HEADERS - BASE_DIRS include - FILES - include/rust-lib/rust-lib.h -) - -# OR for CMake <= 3.23 -target_include_directories(is_odd INTERFACE - $ - $ -) -target_sources(is_odd - INTERFACE - $ - $ -) - -# Rust libraries must be installed using `corrosion_install`. -corrosion_install(TARGETS rust-lib EXPORT RustLibTargets) - -# Installs the main target -install( - EXPORT RustLibTargets - NAMESPACE RustLib:: - DESTINATION lib/cmake/RustLib -) - -# Necessary for packaging helper commands -include(CMakePackageConfigHelpers) -# Create a file for checking version compatibility -# Optional -write_basic_package_version_file( - "${CMAKE_CURRENT_BINARY_DIR}/RustLibConfigVersion.cmake" - VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" - COMPATIBILITY AnyNewerVersion -) - -# Configures the main config file that cmake loads -configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in - "${CMAKE_CURRENT_BINARY_DIR}/RustLibConfig.cmake" - INSTALL_DESTINATION lib/cmake/RustLib - NO_SET_AND_CHECK_MACRO - NO_CHECK_REQUIRED_COMPONENTS_MACRO -) -# Config.cmake.in contains -# @PACKAGE_INIT@ -# -# include(${CMAKE_CURRENT_LIST_DIR}/RustLibTargetsCorrosion.cmake) -# include(${CMAKE_CURRENT_LIST_DIR}/RustLibTargets.cmake) - -# Install all generated files -install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/RustLibConfigVersion.cmake - ${CMAKE_CURRENT_BINARY_DIR}/RustLibConfig.cmake - ${CMAKE_CURRENT_BINARY_DIR}/corrosion/RustLibTargetsCorrosion.cmake - DESTINATION lib/cmake/RustLib -) -``` Please see the [Usage chapter](usage.md) for a complete discussion of possible configuration options. diff --git a/doc/src/usage.md b/doc/src/usage.md index fbbf1036..50eb098c 100644 --- a/doc/src/usage.md +++ b/doc/src/usage.md @@ -39,6 +39,84 @@ Corrosion provides `corrosion_install` to automatically install relevant files: {{#include ../../cmake/Corrosion.cmake:corrosion-install}} +The example below shows how to import a rust library and make it available for install through CMake. + +```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 +) +# Set any global configuration variables such as `Rust_TOOLCHAIN` before this line! +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 a manually written header file which will be exported +# Requires CMake >=3.23 +target_sources(rust-lib INTERFACE + FILE_SET HEADERS + BASE_DIRS include + FILES + include/rust-lib/rust-lib.h +) + +# OR for CMake <= 3.23 +target_include_directories(is_odd INTERFACE + $ + $ +) +target_sources(is_odd + INTERFACE + $ + $ +) + +# Rust libraries must be installed using `corrosion_install`. +corrosion_install(TARGETS rust-lib EXPORT RustLibTargets) + +# Installs the main target +install( + EXPORT RustLibTargets + NAMESPACE RustLib:: + DESTINATION lib/cmake/RustLib +) + +# Necessary for packaging helper commands +include(CMakePackageConfigHelpers) +# Create a file for checking version compatibility +# Optional +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/RustLibConfigVersion.cmake" + VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" + COMPATIBILITY AnyNewerVersion +) + +# Configures the main config file that cmake loads +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/RustLibConfig.cmake" + INSTALL_DESTINATION lib/cmake/RustLib + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) +# Config.cmake.in contains +# @PACKAGE_INIT@ +# +# include(${CMAKE_CURRENT_LIST_DIR}/RustLibTargetsCorrosion.cmake) +# include(${CMAKE_CURRENT_LIST_DIR}/RustLibTargets.cmake) + +# Install all generated files +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/RustLibConfigVersion.cmake + ${CMAKE_CURRENT_BINARY_DIR}/RustLibConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/corrosion/RustLibTargetsCorrosion.cmake + DESTINATION lib/cmake/RustLib +) +``` + [install commands]: https://cmake.org/cmake/help/latest/command/install.html ### Per Target options