cmake_minimum_required(VERSION 3.10) project(lidarlib VERSION 1.0.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() find_package(Threads REQUIRED) option(BUILD_SHARED_LIBS "Build shared (.so) libraries instead of static" ON) set(LIDARLIB_SOURCES src/olei_lidar.cpp src/sick_lidar.cpp src/espe_lidar.cpp src/lidar_config.cpp ) 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 $ $ ) target_link_libraries(lidarlib PUBLIC Threads::Threads) 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) endif() # install + find_package() support include(GNUInstallDirs) include(CMakePackageConfigHelpers) install(TARGETS lidarlib EXPORT lidarlibTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(EXPORT lidarlibTargets FILE lidarlibTargets.cmake NAMESPACE lidarlib:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/lidarlib ) configure_package_config_file( cmake/lidarlibConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/lidarlibConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/lidarlib ) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/lidarlibConfigVersion.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 )