cmake_minimum_required(VERSION 3.10) project(laser_geometry) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) include(CTest) # Find dependencies find_package(Eigen3 REQUIRED) find_package(GTest REQUIRED) # Include directories include_directories( include ${EIGEN3_INCLUDE_DIRS} ${GTEST_INCLUDE_DIRS} ) # Create library add_library(laser_geometry SHARED src/laser_geometry.cpp) target_include_directories(laser_geometry PUBLIC $ $ ) target_link_libraries(laser_geometry PUBLIC sensor_msgs geometry_msgs robot_time tf3 data_convert ) if(TARGET Eigen3::Eigen) target_link_libraries(laser_geometry PUBLIC Eigen3::Eigen) else() target_include_directories(laser_geometry PUBLIC ${EIGEN3_INCLUDE_DIRS}) endif() # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. target_compile_definitions(laser_geometry PRIVATE "LASER_GEOMETRY_BUILDING_LIBRARY") # --- Cài đặt thư viện vào hệ thống khi chạy make install --- install(TARGETS laser_geometry EXPORT laser_geometry-targets ARCHIVE DESTINATION lib # Thư viện tĩnh .a LIBRARY DESTINATION lib # Thư viện động .so RUNTIME DESTINATION bin # File thực thi (nếu có) INCLUDES DESTINATION include # Cài đặt include ) install( DIRECTORY include/ DESTINATION include/${PROJECT_NAME} ) # --- Xuất export set laser_geometry-targets thành file CMake module --- # --- Tạo file lib/cmake/laser_geometry/laser_geometry-targets.cmake --- # --- File này chứa cấu hình giúp project khác có thể dùng --- # --- Find_package(laser_geometry REQUIRED) --- # --- Target_link_libraries(my_app PRIVATE laser_geometry::laser_geometry) --- install(EXPORT laser_geometry-targets FILE laser_geometry-targets.cmake NAMESPACE laser_geometry:: DESTINATION lib/cmake/laser_geometry ) # Tests if(BUILD_TESTING) enable_testing() add_executable(projection_test test/projection_test.cpp) target_link_libraries(projection_test laser_geometry GTest::GTest GTest::Main pthread ) add_test(NAME projection_test COMMAND projection_test) endif()