cmake_minimum_required (VERSION 2.4.6)

include ($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
set (ROS_BUILD_TYPE Debug)
#set (ROS_BUILD_TYPE RelWithDebInfo)
rosbuild_init ()
rosbuild_add_boost_directories ()
#add_definitions (-Wall -O3 -msse3 -mssse3 -funroll-loops)

set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

find_package(wxWidgets REQUIRED)
include(${wxWidgets_USE_FILE})
include_directories(${wxWidgets_INCLUDE_DIRS})
link_libraries(${wxWidgets_LIBRARIES})

# ---[ Data
rosbuild_download_data (http://pr.willowgarage.com/data/pcl/office_chair_model.pcd data/office_chair_model.pcd d23282d322e0d45cadbce2e23bfc9e60)
rosbuild_download_data (http://pr.willowgarage.com/data/pcl/office_chair_scene_360.pcd data/office_chair_scene_360.pcd 7a27e3a2a0f444b7897b394290d7d3c3)
rosbuild_download_data (http://pr.willowgarage.com/data/pcl/office_scene.pcd data/office_scene.pcd 5d741d8b4b48536f288f63ea65c5ed34)
rosbuild_download_data (http://pr.willowgarage.com/data/pcl/table_scene_lms400.pcd data/table_scene_lms400.pcd 546b5b4822fb1de21b0cf83d41ad6683)
rosbuild_download_data (http://pr.willowgarage.com/data/pcl/table_scene_mug_stereo_textured.pcd data/table_scene_mug_stereo_textured.pcd 62c812409b10c8ae651d52c90b19771a)

# ---[ Examples
# I/O
rosbuild_add_executable (tutorial_pcd_write src/pcd_write.cpp)
rosbuild_add_executable (tutorial_pcd_read src/pcd_read.cpp)
#rosbuild_add_executable (tutorial_bag_read src/bag_read.cpp)

rosbuild_add_executable (tutorial_pcd_concatenate_fields src/pcd_concatenate_fields.cpp)
rosbuild_add_executable (tutorial_pcd_concatenate_points src/pcd_concatenate_points.cpp)

# Filtering
rosbuild_add_executable (tutorial_filter_voxel_grid src/filter_voxel_grid.cpp)
rosbuild_add_executable (tutorial_filter_statistical_outlier_removal src/filter_statistical_outlier_removal.cpp)
rosbuild_add_executable (tutorial_filter_extract_indices src/filter_extract_indices.cpp)
rosbuild_add_executable (tutorial_filter_passthrough src/filter_passthrough.cpp)
rosbuild_add_executable (tutorial_filter_project_inliers src/filter_project_inliers.cpp)

# Segmentation
rosbuild_add_executable (tutorial_segmentation_cylinder src/segmentation_cylinder.cpp)
rosbuild_add_executable (tutorial_segmentation_plane src/segmentation_plane.cpp)

# Surface
rosbuild_add_executable (tutorial_surface_convex_hull src/surface_convex_hull.cpp)
rosbuild_add_executable (tutorial_surface_mls src/surface_mls.cpp)

# RangeImage
rosbuild_add_executable (tutorial_range_image_creation src/range_image_creation.cpp)
rosbuild_add_executable (tutorial_range_image_visualization src/range_image_visualization.cpp)
rosbuild_add_executable (tutorial_range_image_live_viewer src/range_image_live_viewer.cpp)
rosbuild_add_executable (tutorial_range_image_border_extraction src/range_image_border_extraction.cpp)


# Keypoints
rosbuild_add_executable(tutorial_narf_keypoint_extraction src/narf_keypoint_extraction.cpp)


rosbuild_add_executable(tutorial_narf_feature_extraction src/narf_feature_extraction.cpp)

rosbuild_add_executable(tutorial_narf_descriptor_visualization src/narf_descriptor_visualization.cpp)

# Registration
rosbuild_add_executable (pairwise_incremental_registration src/pairwise_incremental_registration.cpp)

# Demo
rosbuild_add_executable (table_object_detector src/table_object_detector.cpp)

# Online PointCloud2 Viewer
rosbuild_add_executable (pointcloud_online_viewer src/pointcloud_online_viewer.cpp)

