# ----- Find dependencies ----- # popl set(popl_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/3rd/popl/include) set(USE_STACK_TRACE_LOGGER OFF CACHE BOOL "Enable automatic stack trace logger of google-glog") if(USE_STACK_TRACE_LOGGER) find_package(Glog REQUIRED) include_directories(${GLOG_INCLUDE_DIR}) message(STATUS "Stack trace logger: ENABLED") else() message(STATUS "Stack trace logger: DISABLED") endif() set(USE_GOOGLE_PERFTOOLS OFF CACHE BOOL "Enable profiler of google-perftools") if(USE_GOOGLE_PERFTOOLS) find_package(Gperftools REQUIRED) include_directories(${GPERFTOOLS_INCLUDE_DIRS}) message(STATUS "Google Perftools: ENABLED") else() message(STATUS "Google Perftools: DISABLED") endif() # ----- Show dialog ----- if(USE_PANGOLIN_VIEWER) message(STATUS "Viewer for examples: PangolinViewer") elseif(USE_SOCKET_PUBLISHER) message(STATUS "Viewer for examples: SocketPublisher") else() message(STATUS "Viewer for examples: None") endif() # ----- Build example executables ----- set(EXECUTABLE_TARGETS "") # add_executable(run_camera_slam run_camera_slam.cc) # list(APPEND EXECUTABLE_TARGETS run_camera_slam) # add_executable(run_camera_localization run_camera_localization.cc) # list(APPEND EXECUTABLE_TARGETS run_camera_localization) add_executable(run_image_slam run_image_slam.cc util/image_util.cc) list(APPEND EXECUTABLE_TARGETS run_image_slam) add_executable(run_image_slam_planeSeg run_image_slam_planeSeg.cc util/image_planeSeg_util.cc) list(APPEND EXECUTABLE_TARGETS run_image_slam_planeSeg) add_executable(run_image_localization run_image_localization.cc util/image_util.cc) list(APPEND EXECUTABLE_TARGETS run_image_localization) # FW: Re-localization using point and line cloud add_executable(run_image_localization_point_line run_image_localization_point_line.cc util/image_util.cc util/tum_rgbd_util.cc) list(APPEND EXECUTABLE_TARGETS run_image_localization_point_line) # add_executable(run_video_slam run_video_slam.cc) # list(APPEND EXECUTABLE_TARGETS run_video_slam) # add_executable(run_video_localization run_video_localization.cc) # list(APPEND EXECUTABLE_TARGETS run_video_localization) add_executable(run_euroc_slam run_euroc_slam.cc util/euroc_util.cc) list(APPEND EXECUTABLE_TARGETS run_euroc_slam) add_executable(run_euroc_slam_with_line run_euroc_slam_with_line.cc util/euroc_util.cc) list(APPEND EXECUTABLE_TARGETS run_euroc_slam_with_line) # FW: add_executable(run_euroc_slam_planeSeg run_euroc_slam_planeSeg.cc util/euroc_planeSeg_util.cc) list(APPEND EXECUTABLE_TARGETS run_euroc_slam_planeSeg) add_executable(run_kitti_slam run_kitti_slam.cc util/kitti_util.cc) list(APPEND EXECUTABLE_TARGETS run_kitti_slam) add_executable(run_kitti_slam_with_line run_kitti_slam_with_line.cc util/kitti_util.cc) list(APPEND EXECUTABLE_TARGETS run_kitti_slam_with_line) add_executable(run_tum_rgbd_slam run_tum_rgbd_slam.cc util/tum_rgbd_util.cc) list(APPEND EXECUTABLE_TARGETS run_tum_rgbd_slam) # FW: run tum_rgbd_slam with planar segmentation (monocular/RGBD) add_executable(run_slam_planeSeg run_slam_planeSeg.cc util/planeSeg_util.cc) list(APPEND EXECUTABLE_TARGETS run_slam_planeSeg) # FW: run tum_rgbd_slam with line segments (monocular/RGBD) add_executable(run_tum_rgbd_slam_with_line run_tum_rgbd_slam_with_line.cc util/tum_rgbd_util.cc) list(APPEND EXECUTABLE_TARGETS run_tum_rgbd_slam_with_line) foreach(EXECUTABLE_TARGET IN LISTS EXECUTABLE_TARGETS) # Set output directory for executables set_target_properties(${EXECUTABLE_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}" RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}" RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${PROJECT_BINARY_DIR}" RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${PROJECT_BINARY_DIR}") # PangolinViewer is used on a priority basis if(USE_PANGOLIN_VIEWER) # Set macro flag target_compile_definitions(${EXECUTABLE_TARGET} PRIVATE USE_PANGOLIN_VIEWER) # Link viewer target_link_libraries(${EXECUTABLE_TARGET} PRIVATE pangolin_viewer) elseif(USE_SOCKET_PUBLISHER) # Set macro flag target_compile_definitions(${EXECUTABLE_TARGET} PRIVATE USE_SOCKET_PUBLISHER) # Link viewer target_link_libraries(${EXECUTABLE_TARGET} PRIVATE socket_publisher) endif() # Setup stack trace logger if(USE_STACK_TRACE_LOGGER) target_compile_definitions(${EXECUTABLE_TARGET} PRIVATE USE_STACK_TRACE_LOGGER) target_link_libraries(${EXECUTABLE_TARGET} PRIVATE ${GLOG_LIBRARIES}) endif() # Setup google-perftools if(USE_GOOGLE_PERFTOOLS) target_compile_definitions(${EXECUTABLE_TARGET} PRIVATE USE_GOOGLE_PERFTOOLS) target_link_libraries(${EXECUTABLE_TARGET} PRIVATE ${GPERFTOOLS_LIBRARIES}) endif() # Link PLPSLAM target_link_libraries(${EXECUTABLE_TARGET} PRIVATE ${PROJECT_NAME} opencv_imgcodecs opencv_videoio) # include popl and spdlog headers target_include_directories(${EXECUTABLE_TARGET} PRIVATE $ $) endforeach()