71 lines
2.0 KiB
CMake
71 lines
2.0 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)
|
|
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
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>)
|
|
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
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>)
|
|
target_link_libraries(test_bin PRIVATE
|
|
conversions
|
|
)
|
|
|
|
add_executable(j7s_diagnostic_node src/j7s_diagnostic_node.cpp)
|
|
target_include_directories(j7s_diagnostic_node PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>)
|
|
target_link_libraries(j7s_diagnostic_node PRIVATE
|
|
conversions
|
|
rclcpp::rclcpp
|
|
)
|
|
|
|
install(TARGETS
|
|
conversions
|
|
test_bin
|
|
j7s_diagnostic_node
|
|
DESTINATION lib/${PROJECT_NAME})
|
|
|
|
ament_export_targets(export_${PROJECT_NAME})
|
|
ament_package()
|