first commit
This commit is contained in:
137
CMakeLists.txt
137
CMakeLists.txt
@@ -1,91 +1,86 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(laser_geometry)
|
||||
|
||||
if(NOT CMAKE_CXX_STANDARD)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
endif()
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
include(CTest)
|
||||
|
||||
find_package(ament_cmake REQUIRED)
|
||||
find_package(ament_cmake_python REQUIRED)
|
||||
|
||||
find_package(rclcpp REQUIRED)
|
||||
find_package(sensor_msgs REQUIRED)
|
||||
find_package(tf2 REQUIRED)
|
||||
find_package(eigen3_cmake_module REQUIRED)
|
||||
# Find dependencies
|
||||
find_package(Eigen3 REQUIRED)
|
||||
find_package(GTest REQUIRED)
|
||||
|
||||
ament_python_install_package(laser_geometry PACKAGE_DIR src/laser_geometry)
|
||||
|
||||
add_library(laser_geometry SHARED src/laser_geometry.cpp)
|
||||
target_include_directories(laser_geometry
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>
|
||||
)
|
||||
target_link_libraries(laser_geometry PUBLIC
|
||||
${sensor_msgs_TARGETS}
|
||||
tf2::tf2
|
||||
)
|
||||
if(TARGET Eigen3::Eigen)
|
||||
target_link_libraries(laser_geometry PUBLIC Eigen3::Eigen)
|
||||
else()
|
||||
target_include_directories(laser_geometry PUBLIC ${Eigen3_INCLUDE_DIRS})
|
||||
# Add subdirectories for message dependencies
|
||||
if (NOT TARGET sensor_msgs)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../common_msgs/sensor_msgs ${CMAKE_BINARY_DIR}/sensor_msgs_build)
|
||||
endif()
|
||||
|
||||
target_link_libraries(laser_geometry PRIVATE
|
||||
rclcpp::rclcpp
|
||||
if (NOT TARGET geometry_msgs)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../common_msgs/geometry_msgs ${CMAKE_BINARY_DIR}/geometry_msgs_build)
|
||||
endif()
|
||||
|
||||
if (NOT TARGET robot_time)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../robot_time ${CMAKE_BINARY_DIR}/robot_time_build)
|
||||
endif()
|
||||
|
||||
# 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
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>
|
||||
)
|
||||
|
||||
target_link_libraries(laser_geometry PUBLIC
|
||||
sensor_msgs
|
||||
geometry_msgs
|
||||
robot_time
|
||||
tf2
|
||||
)
|
||||
|
||||
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")
|
||||
|
||||
# Export old-style CMake variables
|
||||
ament_export_include_directories("include/${PROJECT_NAME}")
|
||||
ament_export_libraries(laser_geometry)
|
||||
|
||||
# Export modern CMake targets
|
||||
ament_export_targets(laser_geometry)
|
||||
|
||||
ament_export_dependencies(
|
||||
Eigen3
|
||||
sensor_msgs
|
||||
tf2
|
||||
# Install targets
|
||||
install(
|
||||
TARGETS laser_geometry
|
||||
EXPORT laser_geometry
|
||||
ARCHIVE DESTINATION lib
|
||||
LIBRARY DESTINATION lib
|
||||
RUNTIME DESTINATION bin
|
||||
INCLUDES DESTINATION include
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS laser_geometry
|
||||
EXPORT laser_geometry
|
||||
ARCHIVE DESTINATION lib
|
||||
LIBRARY DESTINATION lib
|
||||
RUNTIME DESTINATION bin
|
||||
INCLUDES DESTINATION include
|
||||
)
|
||||
|
||||
install(
|
||||
DIRECTORY include/
|
||||
DESTINATION include/${PROJECT_NAME}
|
||||
DIRECTORY include/
|
||||
DESTINATION include/${PROJECT_NAME}
|
||||
)
|
||||
|
||||
# Tests
|
||||
if(BUILD_TESTING)
|
||||
find_package(ament_lint_auto REQUIRED)
|
||||
ament_lint_auto_find_test_dependencies()
|
||||
find_package(ament_cmake_gtest REQUIRED)
|
||||
|
||||
ament_add_gtest(projection_test
|
||||
test/projection_test.cpp
|
||||
TIMEOUT 240)
|
||||
if(TARGET projection_test)
|
||||
target_link_libraries(projection_test laser_geometry rclcpp::rclcpp)
|
||||
endif()
|
||||
|
||||
find_package(ament_cmake_pytest REQUIRED)
|
||||
|
||||
ament_add_pytest_test(projection test/projection_test.py
|
||||
TIMEOUT 120
|
||||
)
|
||||
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()
|
||||
|
||||
ament_package()
|
||||
|
||||
Reference in New Issue
Block a user