j7s_diagnostics_ros/CMakeLists.txt

59 lines
1.6 KiB
CMake

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)
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
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>)
target_link_libraries(conversions PUBLIC
j7s_diagnostics_cxx_bridge
j7s_diagnostics_cxx
${diagnostic_msgs_TARGETS}
)
add_executable(test_bin src/test.cpp)
target_include_directories(test_bin PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>)
target_link_libraries(test_bin PRIVATE
conversions
)
install(TARGETS
conversions
#test_bin
DESTINATION lib/${PROJECT_NAME})
ament_export_targets(export_${PROJECT_NAME})
ament_package()