cmake_minimum_required (VERSION 2.4.6)

include ($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
#set (ROS_BUILD_TYPE Release)
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 (VTK REQUIRED)
include (${VTK_USE_FILE})

# ---[ 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_link_boost (tutorial_bag_read system filesystem)

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)
target_link_libraries (tutorial_range_image_creation pcl_range_image)

# Registration
rosbuild_add_executable (pairwise_incremental_registration src/pairwise_incremental_registration.cpp)
target_link_libraries (pairwise_incremental_registration vtkCommon vtkHybrid)

# 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)
target_link_libraries (pointcloud_online_viewer vtkCommon vtkHybrid)

