cmake_minimum_required(VERSION 3.22) project(j7s_diagnostics_ros CXX) find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(diagnostic_msgs REQUIRED) find_package(fmt REQUIRED) include(FetchContent) FetchContent_Declare( Corrosion GIT_REPOSITORY https://github.com/corrosion-rs/corrosion.git GIT_TAG master ) FetchContent_MakeAvailable(Corrosion) set(CMAKE_CXX_STANDARD 20) # Rust bindings. corrosion_import_crate(MANIFEST_PATH j7s_diagnostics_cxx/Cargo.toml) corrosion_add_cxxbridge(j7s_diagnostics_cxx_bridge CRATE j7s_diagnostics_cxx FILES lib.rs) corrosion_install(TARGETS j7s_diagnostics_cxx EXPORT export_${PROJECT_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) # The rest of the stuff. # Note that rust/cxx doesn't support shared libraries so # this library (and anything that uses it) will have # to be statically linked. add_library(conversions STATIC src/conversions.cpp) target_include_directories(conversions PUBLIC $ $) target_link_libraries(conversions PUBLIC j7s_diagnostics_cxx_bridge j7s_diagnostics_cxx fmt ${diagnostic_msgs_TARGETS} ) add_executable(test_bin src/test.cpp) target_include_directories(test_bin PUBLIC $ $) target_link_libraries(test_bin PRIVATE conversions ) install(TARGETS conversions test_bin DESTINATION lib/${PROJECT_NAME}) ament_export_targets(export_${PROJECT_NAME}) ament_package()