72 lines
1.8 KiB
CMake
Executable File
72 lines
1.8 KiB
CMake
Executable File
cmake_minimum_required(VERSION 3.10)
|
|
project(tf2_sensor_msgs)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
# Find dependencies
|
|
find_package(Boost COMPONENTS thread REQUIRED)
|
|
find_package(GTest QUIET)
|
|
|
|
# Finding Eigen3
|
|
find_package(Eigen3 QUIET)
|
|
if(NOT EIGEN3_FOUND)
|
|
# Fallback: try to find Eigen via cmake_modules or pkg-config
|
|
find_package(PkgConfig QUIET)
|
|
if(PkgConfig_FOUND)
|
|
pkg_check_modules(EIGEN3 QUIET eigen3)
|
|
endif()
|
|
# If still not found, try common include paths
|
|
if(NOT EIGEN3_FOUND)
|
|
find_path(EIGEN3_INCLUDE_DIRS
|
|
NAMES Eigen/Core
|
|
PATHS /usr/include/eigen3 /usr/local/include/eigen3
|
|
)
|
|
if(EIGEN3_INCLUDE_DIRS)
|
|
set(EIGEN3_FOUND TRUE)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
# Note: eigen 3.2 (on older Ubuntu) only provides EIGEN3_INCLUDE_DIR,
|
|
# not EIGEN3_INCLUDE_DIRS, so we have to set the latter from the former.
|
|
if(NOT EIGEN3_INCLUDE_DIRS)
|
|
set(EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
|
|
endif()
|
|
|
|
if(NOT EIGEN3_FOUND)
|
|
message(FATAL_ERROR "Eigen3 not found. Please install libeigen3-dev")
|
|
endif()
|
|
|
|
# Include directories
|
|
include_directories(
|
|
include
|
|
${EIGEN3_INCLUDE_DIRS}
|
|
)
|
|
|
|
# Install headers
|
|
install(DIRECTORY include/${PROJECT_NAME}/
|
|
DESTINATION include/${PROJECT_NAME}
|
|
)
|
|
|
|
# Testing
|
|
if(GTest_FOUND OR GTEST_FOUND)
|
|
enable_testing()
|
|
find_package(Threads REQUIRED)
|
|
|
|
add_executable(test_tf2_sensor_msgs test/test_tf2_sensor_msgs.cpp)
|
|
target_include_directories(test_tf2_sensor_msgs PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
${EIGEN3_INCLUDE_DIRS}
|
|
${GTEST_INCLUDE_DIRS}
|
|
)
|
|
target_link_libraries(test_tf2_sensor_msgs
|
|
${GTEST_LIBRARIES}
|
|
Threads::Threads
|
|
)
|
|
add_test(NAME test_tf2_sensor_msgs COMMAND test_tf2_sensor_msgs)
|
|
else()
|
|
message(STATUS "Google Test not found. Tests will not be built.")
|
|
endif()
|