refactor: restructure lidarlib into xlidar-driver plugin SDK
- LidarManager facade (liblidar_manager.so): dlopen plugin discovery, available_drivers map<driver_id, PluginRegistry>, create_lidar_device, config.json load/save with legacy lidarlib migration - Common LidarDriverInterface + DriverInfo/DeviceConfig plugin ABI (extern C get_driver_info / create_driver_instance) - Plugins: driver_rplidar (ported from xlocd, Slamtec SDK), driver_olei, driver_sick_code (TiM CoLa-A), driver_sick_safety (nanoScan3), driver_espe - Diagnostics extended with rplidar health + firmware; FOV filter window, range override and legacy remap window unified in DeviceConfig - Rewritten README, diagnostics doc and examples (list_drivers, example, lidar_app) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(lidarlib VERSION 1.0.0 LANGUAGES CXX)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(xlidar_driver VERSION 2.0.0 LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
@@ -9,77 +9,48 @@ endif()
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
option(BUILD_SHARED_LIBS "Build shared (.so) libraries instead of static" ON)
|
||||
option(XLIDAR_BUILD_EXAMPLES "Build example/demo binaries" ON)
|
||||
|
||||
set(LIDARLIB_SOURCES
|
||||
src/olei_lidar.cpp
|
||||
src/sick_lidar.cpp
|
||||
src/espe_lidar.cpp
|
||||
src/lidar_config.cpp
|
||||
)
|
||||
# Where the rplidar plugin finds the Slamtec SDK sources (include/ + src/).
|
||||
# Empty + not auto-detected -> the rplidar plugin is skipped with a warning.
|
||||
set(XLIDAR_RPLIDAR_SDK_DIR "" CACHE PATH "Path to the Slamtec RPLIDAR SDK (dir containing include/ and src/)")
|
||||
|
||||
add_library(lidarlib ${LIDARLIB_SOURCES})
|
||||
set_target_properties(lidarlib PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
target_include_directories(lidarlib PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
target_link_libraries(lidarlib PUBLIC Threads::Threads)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(plugins)
|
||||
|
||||
option(LIDARLIB_BUILD_EXAMPLES "Build example/demo binaries" ON)
|
||||
if(LIDARLIB_BUILD_EXAMPLES)
|
||||
add_executable(example examples/example.cpp)
|
||||
target_link_libraries(example PRIVATE lidarlib)
|
||||
|
||||
add_executable(test_dual examples/test_dual.cpp)
|
||||
target_link_libraries(test_dual PRIVATE lidarlib)
|
||||
|
||||
add_executable(sick_example examples/sick_example.cpp)
|
||||
target_link_libraries(sick_example PRIVATE lidarlib)
|
||||
|
||||
add_executable(nanoscan_example examples/nanoscan_example.cpp)
|
||||
target_link_libraries(nanoscan_example PRIVATE lidarlib)
|
||||
|
||||
add_executable(espe_example examples/espe_example.cpp)
|
||||
target_link_libraries(espe_example PRIVATE lidarlib)
|
||||
|
||||
add_executable(lidar_app examples/lidar_app.cpp)
|
||||
target_link_libraries(lidar_app PRIVATE lidarlib)
|
||||
if(XLIDAR_BUILD_EXAMPLES)
|
||||
add_subdirectory(examples)
|
||||
endif()
|
||||
|
||||
# install + find_package() support
|
||||
# ── install + find_package() support ─────────────────────────────────────────
|
||||
include(GNUInstallDirs)
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
install(TARGETS lidarlib
|
||||
EXPORT lidarlibTargets
|
||||
install(TARGETS lidar_manager
|
||||
EXPORT xlidar_driverTargets
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/xlidar)
|
||||
|
||||
install(EXPORT lidarlibTargets
|
||||
FILE lidarlibTargets.cmake
|
||||
NAMESPACE lidarlib::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/lidarlib
|
||||
install(EXPORT xlidar_driverTargets
|
||||
FILE xlidar_driverTargets.cmake
|
||||
NAMESPACE xlidar::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/xlidar_driver
|
||||
)
|
||||
|
||||
configure_package_config_file(
|
||||
cmake/lidarlibConfig.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/lidarlibConfig.cmake
|
||||
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/lidarlib
|
||||
cmake/xlidar_driverConfig.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/xlidar_driverConfig.cmake
|
||||
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/xlidar_driver
|
||||
)
|
||||
write_basic_package_version_file(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/lidarlibConfigVersion.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/xlidar_driverConfigVersion.cmake
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
install(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/lidarlibConfig.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/lidarlibConfigVersion.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/lidarlib
|
||||
${CMAKE_CURRENT_BINARY_DIR}/xlidar_driverConfig.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/xlidar_driverConfigVersion.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/xlidar_driver
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user