Skip to content
Snippets Groups Projects
CMakeLists.txt 3.11 KiB

MESSAGE("Starting laser_scan_utils CMakeLists ...")
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

#find dependencies.
FIND_PACKAGE(faramotics QUIET) #faramotics is only required for some tests
IF(faramotics_FOUND)
	#FIND_PACKAGE(GLUT REQUIRED)
	FIND_PACKAGE(pose_state_time REQUIRED)
    MESSAGE("Faramotics Library FOUND: Tests requiring it will be built.")
ENDIF(faramotics_FOUND)

FIND_PACKAGE(Eigen3 3.3 REQUIRED)
FIND_PACKAGE(csm QUIET)
FIND_PACKAGE(falkolib QUIET)

#include directories
INCLUDE_DIRECTORIES(. /usr/local/include)
INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIRS})
IF(csm_FOUND)
    INCLUDE_DIRECTORIES(${csm_INCLUDE_DIR})
ENDIF(csm_FOUND)
IF(faramotics_FOUND)
    INCLUDE_DIRECTORIES(${faramotics_INCLUDE_DIRS})
ENDIF(faramotics_FOUND)
IF(falkolib_FOUND)
  MESSAGE(STATUS "FALKO lib found:")
  MESSAGE(STATUS "  falkolib_INCLUDE_DIRS ${falkolib_INCLUDE_DIRS}")
  MESSAGE(STATUS "  falkolib_LIBRARY_DIRS ${falkolib_LIBRARY_DIRS}")
  MESSAGE(STATUS "  falkolib_LIBRARIES ${falkolib_LIBRARIES}")
  add_definitions(-DEIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT)
  INCLUDE_DIRECTORIES(${falkolib_INCLUDE_DIRS})
  LINK_DIRECTORIES(${falkolib_LIBRARY_DIRS})
ENDIF(falkolib_FOUND)

#headers
SET(HDRS_BASE
    laser_scan_utils.h)

SET(HDRS
    corner_finder.h
    corner_finder_inscribed_angle.h
    corner_point.h
    grid_2d.h
    grid_cluster.h
    laser_scan.h
    laser_scan_with_params.h
    line_finder.h
    line_finder_hough.h
    line_finder_iterative.h
    line_finder_jump_fit.h
    line_segment.h
    point_set.h
    polyline.h
    scan_segment.h
    loop_closure_base.h
    scene_base.h
    
    )
  IF(csm_FOUND)
    SET(HDRS ${HDRS}
      icp.h)
  ENDIF(csm_FOUND)

  IF(falkolib_FOUND)
    SET(HDRS ${HDRS}
      corner_falko_2d.h
      loop_closure_falko.h
      scene_falko.h
      match_loop_closure_scene.h)
  ENDIF(falkolib_FOUND)

#sources
SET(SRCS
    corner_finder.cpp
    corner_finder_inscribed_angle.cpp
    corner_point.cpp
    grid_2d.cpp
    grid_cluster.cpp
    laser_scan.cpp
    laser_scan_with_params.cpp
    line_finder.cpp
    line_finder_hough.cpp
    line_finder_iterative.cpp
    line_finder_jump_fit.cpp
    line_segment.cpp
    point_set.cpp
    polyline.cpp
    scan_segment.cpp
    )
  IF(csm_FOUND)
    SET(SRCS ${SRCS}
      icp.cpp)
  ENDIF(csm_FOUND)

  IF(falkolib_FOUND)
    SET(SRCS ${SRCS}
      corner_falko_2d.cpp)
  ENDIF(falkolib_FOUND)


  
# create the shared library
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
IF(csm_FOUND)
  target_link_libraries(${PROJECT_NAME} ${csm_LIBRARY})
ENDIF(csm_FOUND)

IF(falkolib_FOUND)
  target_link_libraries(${PROJECT_NAME} ${falkolib_LIBRARY})
ENDIF(falkolib_FOUND)

# Examples
IF(BUILD_DEMOS)
  MESSAGE("Building examples.")
  ADD_SUBDIRECTORY(examples)
ENDIF(BUILD_DEMOS)

#install library
INSTALL(TARGETS ${PROJECT_NAME}
      RUNTIME DESTINATION bin
      LIBRARY DESTINATION lib
      ARCHIVE DESTINATION lib)

#install headers
INSTALL(FILES ${HDRS_BASE}
      DESTINATION include/iri-algorithms/laser_scan_utils)
INSTALL(FILES ${HDRS}
      DESTINATION include/iri-algorithms/laser_scan_utils)

#install Find*.cmake
INSTALL(FILES ../Findlaser_scan_utils.cmake DESTINATION ${CMAKE_ROOT}/Modules/)